Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Eigenen Dialog aufrufen (https://www.delphipraxis.net/60440-eigenen-dialog-aufrufen.html)

bundy 6. Jan 2006 22:42


Eigenen Dialog aufrufen
 
Hy ich mal wieder.


Ich hab mir nen eigenen Dialog (form) gemacht.

Meine Frage , wie kann ich diesen aufrufen und abfragen welcher button gedrückt worden ist (JA,Nein);

Also so wie man das mit einen Normalen Dialog auch macht.

lg

Bundy

arbu man 6. Jan 2006 22:53

Re: Eigenen Dialog aufrufen
 
Das Ganze könnte in etwa so aussehen:
Delphi-Quellcode:
function Execute:boolean; // Der Aufruf
begin
  fdeineform:= Tfdeineform.Create(Application);
  try
    fdeineform.ShowModal;
    result:=fdeineform.execute;
  finally
    fdeineform.Free;
  end;
end;

type
  Tfdeineform = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  public
    execute:boolean;
  end;

...

procedure Tfdeineform .Button2Click(Sender: TObject);
begin
  execute:=false;
  close;
end;

procedure Tfdeineform .Button1Click(Sender: TObject);
begin
  execute:=true;
  close;
end;
Aber wenn du nur einen dialog mit ja und nein brauchst guckst du dir am besten mal application.messagebox oder windows.messagedlg an.

bundy 6. Jan 2006 22:55

Re: Eigenen Dialog aufrufen
 
Eigendlich hab ich da eh nur Ja und nein drauf, aber mir gefällter der standart Dialog nicht.

SirThornberry 6. Jan 2006 23:00

Re: Eigenen Dialog aufrufen
 
du kannst ein Form mit "ShowModal" aufrufen. ShowModal liefert einen Integer zurück. Und den Integer kannst du vom Formular her setzen. Wenn zum Beispiel auf den Ja-Button geklickt wird brauchst du nur folgendes schreiben:
Delphi-Quellcode:
ModalResult := mrYes;
und schon wird das Formular geschlossen und ShowModal hat somit den Wert von mrYes.

bundy 6. Jan 2006 23:02

Re: Eigenen Dialog aufrufen
 
Gleich mal testen . :-D

bundy 6. Jan 2006 23:04

Re: Eigenen Dialog aufrufen
 
Wie werte ich dann den Modalresult im Form aus ? :gruebel:

SirThornberry 6. Jan 2006 23:09

Re: Eigenen Dialog aufrufen
 
ganz einfach. Du hast ein Hauptformular (im folgenden als Form1 bezeichnet) und von da aus willst du deinen Dialog aufrufen (im folgenden als Form2 bezeichnet). Mal angenommen du zeigst den Dialog per ButtonClick an:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Form2.ShowModal = mrYes then
    ShowMessage('ja wurde gedrückt')
  else
    ShowMessage('ja wurde NICHT gedrückt').
end;
und in Form2 schreibst du dann beim Button-Ja folgendes:
Delphi-Quellcode:
procedure TForm2.ButtonJaClick(Sender: TObject)
begin
  ModalResult := mrYes; //mrYes ist eine Konstante, kann auch jeder andere Integer sein
end;
und im OnClick von Button-Nein:
Delphi-Quellcode:
procedure TForm2.ButtonJaClick(Sender: TObject)
begin
  ModalResult := mrNo;
end;

ManuMF 6. Jan 2006 23:10

Re: Eigenen Dialog aufrufen
 
ModalResult setzen: Wie SirThornberry geschrieben hat, oder per BitButton (für die kann man ein ModalResult setzen).

Abfrage:
Delphi-Quellcode:
case EigenesForm.ShowModal of
  mrYes: ...
  mrNo: ...
end;
Habe den Roten Kasten gesehen. Ich wollte aber auf die BitButtons hinweisen ;-)

Gruß,
ManuMF

SirThornberry 6. Jan 2006 23:11

Re: Eigenen Dialog aufrufen
 
der Normale TButton hat auch unter Delphi7 bereits das Property ModalResult.
Allerdings wollte ich nicht darauf hinweisen weil sonst irgendwann die Frage kommt wie man das macht wenn jemand auf ein Image klickt.

bundy 6. Jan 2006 23:19

Re: Eigenen Dialog aufrufen
 
also irgendwas klapt da nich, schaut mal


ich hab im dialog

Delphi-Quellcode:
procedure TfmDialogDiensteAuchBuchen.btJaClick(Sender: TObject);
begin
ModalResult:=mrYes;
close;
end;

procedure TfmDialogDiensteAuchBuchen.btNeinClick(Sender: TObject);
begin
ModalResult:=mrNo;
close;
end;
und im Mainform das
Delphi-Quellcode:
case fmDialogDiensteAuchBuchen.ShowModal of
         mrYes: Beep; //nur zum testen
         mrNo: close;

       end;
aber macht keinen Beep wenn ich auf Ja drück :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:29 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz