![]() |
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 |
Re: Eigenen Dialog aufrufen
Das Ganze könnte in etwa so aussehen:
Delphi-Quellcode:
Aber wenn du nur einen dialog mit ja und nein brauchst guckst du dir am besten mal application.messagebox oder windows.messagedlg an.
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; |
Re: Eigenen Dialog aufrufen
Eigendlich hab ich da eh nur Ja und nein drauf, aber mir gefällter der standart Dialog nicht.
|
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:
und schon wird das Formular geschlossen und ShowModal hat somit den Wert von mrYes.
ModalResult := mrYes;
|
Re: Eigenen Dialog aufrufen
Gleich mal testen . :-D
|
Re: Eigenen Dialog aufrufen
Wie werte ich dann den Modalresult im Form aus ? :gruebel:
|
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:
und in Form2 schreibst du dann beim Button-Ja folgendes:
procedure TForm1.Button1Click(Sender: TObject);
begin if Form2.ShowModal = mrYes then ShowMessage('ja wurde gedrückt') else ShowMessage('ja wurde NICHT gedrückt'). end;
Delphi-Quellcode:
und im OnClick von Button-Nein:
procedure TForm2.ButtonJaClick(Sender: TObject)
begin ModalResult := mrYes; //mrYes ist eine Konstante, kann auch jeder andere Integer sein end;
Delphi-Quellcode:
procedure TForm2.ButtonJaClick(Sender: TObject)
begin ModalResult := mrNo; end; |
Re: Eigenen Dialog aufrufen
ModalResult setzen: Wie SirThornberry geschrieben hat, oder per BitButton (für die kann man ein ModalResult setzen).
Abfrage:
Delphi-Quellcode:
Habe den Roten Kasten gesehen. Ich wollte aber auf die BitButtons hinweisen ;-)
case EigenesForm.ShowModal of
mrYes: ... mrNo: ... end; Gruß, ManuMF |
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. |
Re: Eigenen Dialog aufrufen
also irgendwas klapt da nich, schaut mal
ich hab im dialog
Delphi-Quellcode:
und im Mainform das
procedure TfmDialogDiensteAuchBuchen.btJaClick(Sender: TObject);
begin ModalResult:=mrYes; close; end; procedure TfmDialogDiensteAuchBuchen.btNeinClick(Sender: TObject); begin ModalResult:=mrNo; close; end;
Delphi-Quellcode:
aber macht keinen Beep wenn ich auf Ja drück :gruebel:
case fmDialogDiensteAuchBuchen.ShowModal of
mrYes: Beep; //nur zum testen mrNo: close; end; |
Re: Eigenen Dialog aufrufen
Bei BitButtons muss man das Close weglassen. Könnte da auch der Fall sein.
Gruß, ManuMF |
Re: Eigenen Dialog aufrufen
Ich verwende Button von Developer Express cxButton
Aber ich test mal ohne Close..... uno Momento |
Re: Eigenen Dialog aufrufen
vielleicht ist das Beep in deinem Windows einfach abgeschaltet. Übrigens - alles was hinter
"ModalResult := irgenwas" kommt wird nicht mehr ausgeführt da bei dieser Anweisung schon zurück gesprungen wird. |
Re: Eigenen Dialog aufrufen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi. Das Close ist imho überflüssig.
Also bei mir geht das (siehe Anhang). Dass das so schön geht mit ModalResult, habe ich auch noch nicht gewusst. :) |
Re: Eigenen Dialog aufrufen
:thumb: :thumb: :thumb: :thumb: :thumb: :thumb: :thumb: :thumb: :thumb: :thumb: :thumb: :thumb:
******* FUNKTIONIERT ************** DANKE Leute, echt net von euch :hello: :hello: :hello: :hello: :hello: |
Re: Eigenen Dialog aufrufen
Noch ne kurze Frage.
Das Form schliesst aber warum . Woher kommt dann eigendich das CLOSE |
Re: Eigenen Dialog aufrufen
Zitat:
Zitat:
|
Re: Eigenen Dialog aufrufen
man sollte aufpassen nicht nur "mrYes" und "mrNo" abzufangen sondern wirklich mit Else zu arbeiten. Schließlich kann es auch passieren das jemand das form per "Alt + F4" schließt oder über das X in der Titelleiste und da kommt eben weder "mrYes" noch "mrNo" zurück. (ich glaub es ist mrCancel aber ich würde nicht drauf wetten das es in den nächsten Delphiversionen immer noch mrCancel oder mrClose ist).
Geschlossen wird das Form wegen "ModalResult :=" Da du das Form mit "ShowModal" öffnest signalisierst du damit natürlich auch das du fertig bist. |
Re: Eigenen Dialog aufrufen
OK..... Danke , habt mir echt weitergeholfen :thumb: :thumb: :thumb:
|
Re: Eigenen Dialog aufrufen
Zitat:
|
Re: Eigenen Dialog aufrufen
Hi!
Kehrt er nicht sofort nach setzen des Modalresults zurück, sodass das Close nicht mehr ausgeführt wird? Ciao Frederic |
Re: Eigenen Dialog aufrufen
Ne das Close macht er trozdem aber der Result ist dann nicht mrYes oder mrNo, das hab ich getestet.
|
Re: Eigenen Dialog aufrufen
stimmt, habs auch grad mal debuggt. Wieder was dazu gelernt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz