Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Welcher Button wurde gedrückt (selbsterstellter Dialog) (https://www.delphipraxis.net/47002-welcher-button-wurde-gedrueckt-selbsterstellter-dialog.html)

mr47 4. Jun 2005 20:28


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

malo 4. Jun 2005 20:32

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. ;)

100nF 4. Jun 2005 20:57

Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
 
hi,

das könnte man IMHO mit modalresult machen. kannst du im OI machen.

gruss
urbanbruhin

mr47 4. Jun 2005 21:23

Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
 
Zitat:

Zitat von urbanbruhin
hi,

das könnte man IMHO mit modalresult machen. kannst du im OI machen.

gruss
urbanbruhin

Hi.

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:
form2.ModalResult:=button3.ModalResult;
??? Oder wie.
Diese Zuweisung ist zwar erlaubt, aber wie prüfe ich dass dann in der Mainform?

mfgUndDanke mr47

malo 4. Jun 2005 21:27

Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
 
Delphi-Referenz durchsuchenModalResult :zwinker:

100nF 4. Jun 2005 21:33

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:
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;
auf form2 brauchst du keinen quelltext zu schreiben!
ich hoffe du verstehst es

gruss
urbanbruhin

mr47 4. Jun 2005 21:35

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

Mystic 5. Jun 2005 00:51

Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
 
ModalResult ist bereits der Rückgabewert von ShowModal.

Zitat:

Zitat von Delphi Hilfe
Mit ShowModal können Sie ein Formular modal anzeigen. Da bei einem modalen Formular die Anwendung unterbrochen wird, bis der Benutzer das Fenster wieder schließt, gibt ShowModal die Steuerung erst nach dem Schließen des Formulars zurück. Dabei wird auch der Wert der Eigenschaft ModalResult zurückgegeben.

Um ein modales Formular zu schließen, setzen Sie seine Eigenschaft ModalResult auf einen Wert ungleich 0.


100nF 5. Jun 2005 09:13

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:
procedure TForm1.Button1Click(Sender: TObject);
begin
  case form2.ShowModal of
  1://...
  2://...
  3://...
  //...
  end;
end;
gruee
urbanbruhin

r2c2 5. Jun 2005 09:25

Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
 
Zitat:

Zitat von urbanbruhin
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:
procedure TForm1.Button1Click(Sender: TObject);
begin
  case form2.ShowModal of
  1://...
  2://...
  3://...
  //...
  end;
end;

:wiejetzt: :gruebel:
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.
Delphi-Referenz durchsuchenmrOK

mfg

Christian

malo 5. Jun 2005 10:09

Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
 
Zitat:

Zitat von r2c2
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.

Ganz genau. Man kann NATÜRLICH auch die jeweiligen Variablen/Konstanten per Case abfragen!

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 ;)

100nF 5. Jun 2005 18:06

Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
 
also mich stört es eigentlich nicht dass es integer werte sind...

r2c2 6. Jun 2005 12:42

Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
 
Zitat:

Zitat von urbanbruhin
also mich stört es eigentlich nicht dass es integer werte sind...

Für was einfach wenns auch kompliziert geht! :mrgreen:

mfg

Christian

mr47 6. Jun 2005 13:23

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:
form2.ModalResult:=mrOk
Das gleiche geht auch mit mr Cancel,Retry,Abort,...

und in Form1/Unit1 hab ich das so gemacht

Delphi-Quellcode:
if form2.ModalResult=mrOk then
begin
  machWas;
end;

if form2.ModalResult=mrCancel then
  machnix; *gg*
end;
Von Integerwerten keine Spur :wink:

mfg mr47

Steve 6. Jun 2005 14:03

Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
 
Hi,
Zitat:

Zitat von mr47
Delphi-Quellcode:
form2.ModalResult:=mrOk
...
Von Integerwerten keine Spur :wink:

mrOK ist vom Typ TModalResult.
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:

mr47 6. Jun 2005 14:47

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

r2c2 6. Jun 2005 15:35

Re: Welcher Button wurde gedrückt (selbsterstellter Dialog)
 
Zitat:

Zitat von mr47
Ich versteh euer Problem net ganz! Man kann in Unit2 z.B. folgendes machen:
Delphi-Quellcode:
form2.ModalResult:=mrOk

Außerdem ist es auch einfacher(jedenfalls in einfachen Fällen) den Buttons OK/Abbrechen im OI die Eigenschaft ModalResult zuzuweisen. Dann kannst du dir nämlich diese Zeile sparen. Die Zuweisung passiert dann automatisch.

Zitat:

Zitat von mr47
War mir schon klar dass Zahlen dahinter stecken. Letztendlich ist's ja doch ne 0 oder 1 . Aber das belastet einen doch garnicht, wenn man mit mrOk,mrRetry, usw. arbeiten kann...

Nee, belasten tuts einen nicht, aber es schadet auch nicht die Hintergründe zu kennen. :zwinker:

mfg

Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 Uhr.

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