Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - MessageDlg-Frage zur Syntax und zum Beschriften der Buttons


Schweini31 - Do 20.12.07 19:41
Titel: MessageDlg-Frage zur Syntax und zum Beschriften der Buttons
Hallo,

Ich habe 2 Fragen zum MessageDlg in Delphi.

Ich würde gerne einen MessageDlg machen in dem ich 2 Buttons beschriften kann.

Dabei habe ich 2 Probleme.

1+2.

Delphi-Quelltext
1:
messagedlg('Welchen Wert soll das Ass haben?',mtConfirmation,);                    


So jetzt weiß ich nicht wie ich die Buttons proggen soll... Ich hätte gerne 2 Buttons mit der Aufschrift '1' und '11'.

Geht das überhaupt mit einem MessageDlg?

Bitte helft mir :(

Schweini :)


LorenzS - Do 20.12.07 19:45

Du kannst dir auch nen dialog selber erstellen , zB als Tform mit einer public funtion die die form auf show oder showmodal macht und die das egebnis zurück gibt wenn diese wieder gechlossen wird.


Schweini31 - Do 20.12.07 19:48

user profile iconLorenzS hat folgendes geschrieben:
Du kannst dir auch nen dialog selber erstellen , zB als Tform


Sogut bin ich leider noch nicht, das heißt ich weiß nicht wie die Form dann aufrufe....

Wenn es mir vllt jemand erklären könnte? :D


LorenzS - Do 20.12.07 19:54

mindestens eine formular erstellst du doch beim anwenundungs erstellen, einfach ein 2. formular erstellen.

fomulare zeigt man mit Form.show oder Form.showmodal an


Schweini31 - Do 20.12.07 19:57

user profile iconLorenzS hat folgendes geschrieben:
mindestens eine formular erstellst du doch beim anwenundungs erstellen, einfach ein 2. formular erstellen.


Jaja das erstellen ist nicht das was ich nicht verstehe sondern das "aufrufen" nachdem ich Form erstellt habe. Also die Hauptform. Was mir klar ist: Ich muss die Form in der Uses Klausel deklarieren.

Aber dann brauch ich ja einen Button der die 2. aufruft und wie sieht der Code davon aus ? :(

Schweini


LorenzS - Do 20.12.07 20:12

1. Hauptformular

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
uses UAltDlg;


Function ShowAltDialog(lText,lButton1,lButton2:string):integer;
begin
 AltDialog.Label1 .caption := lText;
 AltDialog.Button1.caption := lButton1;
 AltDialog.Button2.caption := lButton2;
 AltDialog.showmodal; {bei showmodal muss erst das Fenster wieser geschlossen werden bevor es weiter geht}
 Result:=AltDialog.Ergebnis;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowAltDialog('Welchen Wert soll das Ass haben?','1','11'); //es wird zurückgeben ob und welcher Button gedrückt wurde,  -1=keine Button, 1=Button1, 2=Button2 
                                                             //Das Ergebnis bei deisem Beispiel nicht ausgewertet
end;


2. UAltDlg.pas ein Formular mit einem Label und 2 Buttons

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
unit UAltDlg;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TAltDialog = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
   Ergebnis:integer;
  end;

var
  AltDialog: TAltDialog;

implementation

{$R *.DFM}

procedure TAltDialog.Button1Click(Sender: TObject);
begin
 Ergebnis:=1;
 close;
end;

procedure TAltDialog.Button2Click(Sender: TObject);
begin
 Ergebnis:=2;
 close;
end;

procedure TAltDialog.FormShow(Sender: TObject);
begin
 Ergebnis:=-1;
end;

end.


Sry, das es solange gedauert hat, ich musste es erst noch programmieren.


Schweini31 - Do 20.12.07 20:31

Brauchste dich doch nicht für entschudligen; ich habe zu danken. gibt sicher nicht viele die sich hier die Mühe gemacht hätten das Programm zu schreiben ! Danke!

Schweini


Shorty - Fr 21.12.07 19:11

So eine neue Form erzeugen ist eigentlich relativ umständlich, wenn man einen Dialog haben will, der wie der von MessageDlg aussieht, geht das auch einfacher:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var
  Dlg: TForm;
begin
  Dlg := CreateMessageDialog('Fehler', mtError, MBOKCANCEL);
  try
    TButton(Dlg.FindComponent('OK')).Caption := 'Löschen';
    TButton(Dlg.FindComponent('Cancel')).Caption := 'Beenden';
    case Dlg.ShowModal of
      mrOK:ShowMessage('Löschen');
      mrCancel:ShowMessage('Beenden');
    end;
  finally
    FreeAndNil(Dlg);
  end;
end;


MfG Shorty