Autor Beitrag
Schweini31
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Do 20.12.07 19:41 
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.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

MS-DOS, WIN 7, WIN 10
BP7.0, D3, D5
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

MS-DOS, WIN 7, WIN 10
BP7.0, D3, D5
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

MS-DOS, WIN 7, WIN 10
BP7.0, D3, D5
BeitragVerfasst: Do 20.12.07 20:12 
1. Hauptformular
ausblenden 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
ausblenden volle Höhe 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 107

Win XP, Ubuntu 8.04
Delphi 7 Prof., Delphi 2005 Pers.
BeitragVerfasst: 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:
ausblenden 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