![]() |
Welcher Button wurde gedrückt (selbsterstellter Dialog)
Guten Tag.
Ich habe zwei Units (bzw. zwei Forms). Das eine ist die Hauptform und das andere ist ein selbstgebastelter Dialog. Wie kann ich jetzt im Hauptfenster feststellen, welcher button im Dialog gedrückt wurde? Man könnte das ja mit Globalen Variablen machen. Aber die sind ja nicht gut (heißts hier überall)... Wie kann ich also Informationen in die andere Unit transportieren? Danke für Hilfe... mfg mr47 |
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
Du könntest sie z.B. im Public-Bereich einer Klasse (z.B. deines Forms) unterbringen. Dann mit Form2.Variable1 ansprechen. ;)
|
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
hi,
das könnte man IMHO mit modalresult machen. kannst du im OI machen. gruss urbanbruhin |
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
Zitat:
Hört sich gut an. Es gibt auch von allen(?) objekten ein Modalresult. Aber wie übergebe ich dass dann? Also wenn ich in Form2 3 Buttons hab kommt dann
Delphi-Quellcode:
??? Oder wie.
form2.ModalResult:=button3.ModalResult;
Diese Zuweisung ist zwar erlaubt, aber wie prüfe ich dass dann in der Mainform? mfgUndDanke mr47 |
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
![]() |
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
hi,
ich habe es auch noch nie angewendet, habe aber mal etwas ausprobiert und es funktioniert. auf form2 (dialog) befinden verschiedene buttons. du musst im OI zu jedem button ein modalresult angeben. auf form1 (hauptform) kannst du dann die form2 so aufrufen:
Delphi-Quellcode:
auf form2 brauchst du keinen quelltext zu schreiben!
procedure TForm1.Button1Click(Sender: TObject);
begin form2.ShowModal; // showmodal ist wichtig, sonst kommt die messagebox, bevor du auf einen button geklickt hast if form2.ModalResult = mrok then // mrok, mrcancel, usw... alle verschiedenen die du den buttons auf form 2 zugewiesen hast showmessage('ok') if form2.ModalResult = mrcancel then showmessage('abbrechen') end; ich hoffe du verstehst es gruss urbanbruhin |
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
Danke euch allen! Die Hilfe hat mir grad ein wenig geholfen. Wollte es jetzt grad ausprobieren aber urbanbruhins Posting erledigt das!
Vielen Dank mfg mr47 |
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
ModalResult ist bereits der Rückgabewert von ShowModal.
Zitat:
|
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
aber der rückgabewert von showmodal ist ja eine integer zahl, und nicht msok, mrcancel usw.
dann müsste man es etwa so machen:
Delphi-Quellcode:
gruee
procedure TForm1.Button1Click(Sender: TObject);
begin case form2.ShowModal of 1://... 2://... 3://... //... end; end; urbanbruhin |
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
Zitat:
Der Rückgabewert is n Integer, klar, aber AFAIK is mrOK auch einer. Also kein Aufzählungstyp(heißt das so?), sondern ne Konstante. Das is glaub ich aus Kompatibilitätsgründen so. ![]() mfg Christian |
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
Zitat:
Die Kompatibilitätsgründe sind die: Falls sich die Firma Borland (die Funktion ist imho auch von Borland, genau wie die Konstanten) mal entscheiden sollte, die Nummern zu ändern, muss man das in allen Programmen jeweils ändern. Die Konstanten werden jedoch genauso nutzbar sein ;) |
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
also mich stört es eigentlich nicht dass es integer werte sind...
|
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
Zitat:
mfg Christian |
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
:wiejetzt: :gruebel:
Ich versteh euer Problem net ganz! Man kann in Unit2 z.B. folgendes machen:
Delphi-Quellcode:
Das gleiche geht auch mit mr Cancel,Retry,Abort,...
form2.ModalResult:=mrOk
und in Form1/Unit1 hab ich das so gemacht
Delphi-Quellcode:
Von Integerwerten keine Spur :wink:
if form2.ModalResult=mrOk then
begin machWas; end; if form2.ModalResult=mrCancel then machnix; *gg* end; mfg mr47 |
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
Hi,
Zitat:
type TModalResult = Low(Integer)..High(Integer); mrOK hat z.B. den Wert von ID_OK, welches so (als const) definiert wird: IDOK=1; ID_OK=IDOK; Also doch Integer :zwinker: Is doch das gleiche mit Flags usw. -> Lieber Konstanten mit "sprechenden" Bezeichnungen als nichtssagende Zahlen... Gruß Stephan :dance: |
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
War mir schon klar dass Zahlen dahinter stecken. Letztendlich ist's ja doch ne 0 oder 1 :wink: . Aber das belastet einen doch garnicht, wenn man mit mrOk,mrRetry, usw. arbeiten kann...
mfg |
Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
Zitat:
Zitat:
mfg Christian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 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 by Thomas Breitkreuz