Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi MessageDlg abfangen der Buttons (https://www.delphipraxis.net/79680-messagedlg-abfangen-der-buttons.html)

Darkchild 26. Okt 2006 12:35


MessageDlg abfangen der Buttons
 
Hallo,

habe da mal eine Frage am rande:

Wenn ich einen MessageDlg habe mit den Buttons mbYes,mbNo und mbCancel und ich auf den jeweils geklickten Button reagieren möchte muss ich die wie ansprechen ?

Hier im Quellcode könnt ihr sehen wie ich es versucht habe, kommt dabei aber zu einer Typen- unverträglichkeit.

Delphi-Quellcode:
procedure Tfrmansimitarst.cxbtnloeschenClick(Sender: TObject);
begin
MessageDlg('Diesen Mitarbeiter wirklich löschen ?', mtConfirmation, [mbYes, mbNo, mbCancel], 0);
  if mtConfirmation = mbyes then
     begin
     DataModuleMain.ibtablemitarbeiter.Delete;
     end
  else
     DataModuleMain.ibtablemitarbeiter.Cancel;
end;
Also meine Frage jetzt, wie mache ich das richig ? :oops:

Gruss
Darkchild

Bernhard Geyer 26. Okt 2006 12:38

Re: MessageDlg abfangen der Buttons
 
Schau dir den Rückgabewert der MessageDlg-Funktion an

Gollum 26. Okt 2006 12:40

Re: MessageDlg abfangen der Buttons
 
Hallo,

so:
Delphi-Quellcode:
if MessageDlg('Diesen Mitarbeiter wirklich löschen ?', mtConfirmation, [mbYes, mbNo, mbCancel], 0)=mrYes then
begin
  ...
end
else
begin
  ...
end;
Ein Blick in die Delphi-Hilfe hätte auch nicht geschadet.

Darkchild 26. Okt 2006 12:49

Re: MessageDlg abfangen der Buttons
 
Ok Funzt,

den Rückgabewert habe ich in der Zwischenzeit auch in der Delphi Hilfe gefunden, aber muss
ich wirklich den ganzen Dialog mit in die Abfrage packen ?

Hatte gedacht das geht auch kürzer z.B. über eine abfrage auf Tmsgdlgbtn oder so in der Richtung.

Aber dennoch erstmal thx.
Weil klappt ja mit dem langen msgdlg in der Abfrage.

Gruss
Darkchild

Neutral General 26. Okt 2006 12:52

Re: MessageDlg abfangen der Buttons
 
Delphi-Quellcode:
var Int: Integer;
begin
int := MessageDlg('Diesen Mitarbeiter wirklich löschen ?', mtConfirmation, [mbYes, mbNo, mbCancel], 0);
if int = mrYes then
...
So gings alternativ auch

Gruß
Neutral General

Darkchild 26. Okt 2006 13:05

Re: MessageDlg abfangen der Buttons
 
Ok,

das ich das auch gesamt einer Variablen zuweisen kann ist klar, hatte mehr daran gedacht das es eine andere Möglichkeit gibt aus der abgeleiteten Klasse oder Objekt heraus, aber ist ja nun auch egal.
Nach umsetzten der Geschichte stellt sich mir im Moment nur eine ganz andere Frage :

Warum muss ich in dem Dialog 2 * auf die Buttons drücken bevor der die Aktion umsetzt.
Die ganze Geschichte habe ich bei dem TcxButton auf das Ereignis "OnClick" gelegt und dem Dialog kann ich doch garnicht mitgeben ob 1 oder 2 Klicks, oder ?

Ich weis ein haufen blöder Fragen von mir, aber in der Hilfe sehe ich dazu nix, davon abgesehen mag ich die Hilfe von BDS 2006 auch nicht wirklich( finde diese recht unübersichtlich).

Gruss
Darkchild

OldGrumpy 26. Okt 2006 13:43

Re: MessageDlg abfangen der Buttons
 
Zitat:

Zitat von Darkchild
Warum muss ich in dem Dialog 2 * auf die Buttons drücken bevor der die Aktion umsetzt.
Die ganze Geschichte habe ich bei dem TcxButton auf das Ereignis "OnClick" gelegt und dem Dialog kann ich doch garnicht mitgeben ob 1 oder 2 Klicks, oder ?

Bitte poste mal den entsprechenden Code-Schnipsel, meine Kristallkugel ist gerade zur Wartung unterwegs ;)

Klaus01 26. Okt 2006 13:51

Re: MessageDlg abfangen der Buttons
 
Hallo,
Wenn Du es so aufgaut haben solltest, wird der Dialog zweimal aufgerufen.

Delphi-Quellcode:
if MessageDlg('Diesen Mitarbeiter wirklich löschen ?', mtConfirmation, [mbYes, mbNo, mbCancel], 0)=mrYes then
begin
  ...
end
else
  if MessageDlg('Diesen Mitarbeiter wirklich löschen ?', mtConfirmation, [mbYes, mbNo, mbCancel], 0)=mrCancel then
    begin
    begin

Grüße
Klaus

Neutral General 26. Okt 2006 14:12

Re: MessageDlg abfangen der Buttons
 
Kannst es auch so machen:

Delphi-Quellcode:
Case MessageDlg('Diesen Mitarbeiter wirklich löschen ?', mtConfirmation, [mbYes, mbNo, mbCancel], 0) of
 mrYes: ...
 mrNo : ...
 mrCancel: ...
end;
Gruß
Neutral General

Darkchild 26. Okt 2006 14:47

Re: MessageDlg abfangen der Buttons
 
Hey,

also der Code sieht folgendermaßen aus :

Delphi-Quellcode:
procedure Tfrmansimitarst.cxbtnloeschenClick(Sender: TObject);

begin
MessageDlg('Diesen Mitarbeiter wirklich löschen ?', mtConfirmation, [mbYes, mbNo, mbCancel], 0);
 
if MessageDlg('Diesen Mitarbeiter wirklich löschen ?', mtConfirmation, [mbYes, mbNo, mbCancel], 0)= mrYes then
     begin
     DataModuleMain.ibtablemitarbeiter.Delete;
     end
  else
     DataModuleMain.ibtablemitarbeiter.Cancel;
end;
Der Dialog wir Aufgrufen bei dem Ereigniss "ONClick" klappt auch alles nur wenn der Dialog der Msgdlg erscheint und ich dann dort die Buttons zur Verfügung habe muss ich diese mit einem DoubleClick betätigen damit die jeweilige Funktion ausgeführt wird.

Sollte aber normal mit einem einfachen Klick gehen.

Gruss
Darkchild


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:29 Uhr.
Seite 1 von 2  1 2      

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