![]() |
Re: probleme mit einer messagebox..
Also
Zitat:
|
Re: probleme mit einer messagebox..
es gibt keinen code drumherum
was soll denn beim dem else rein ? nichts oder ? also kann ichs ja auch weglassen ! |
Re: probleme mit einer messagebox..
Delphi-Quellcode:
So einfach is des :)
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin CanClose := ( MessageDlg('Wollen sie wirklich beenden ?', mtConfirmation,[mbYes,mbNo],0) = mrYes ); end; Wichtig im OnCloseQuery der Form nicht im onClose, der Grund ist einfach OnCloseQuery wird vor dem eigentlichen Schliessen der Form aufgerufen, onClose im Prinzip nach dem schliessen und vor dem Beenden/Speicher freigeben. Das es bei Dir in einer endlos Schleife hängt ist dann glaub ich auch zu verstehen :) Form fragt an ob geschlossen werden darf... wenn der Nutzer Ja sagt fragt Dein Close gleich erneut wieder die OnCloseQuery ab. Bei nein wird CanClose (Standard ist True) nicht verändert daher darf die Form schliessen. gruss Dennis |
Re: probleme mit einer messagebox..
Delphi-Quellcode:
Viel Spass beim Beenden. :mrgreen:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin if MessageDlg('Wollen sie wirklich beenden ? (1)', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin close; end else begin Windows.Beep(880,25); MessageDlg('Abgrbrochen durch Anwender', mtConfirmation, [mbOK], 0); end; end; procedure TForm1.Button2Click(Sender: TObject); begin if MessageBox(Handle, 'Wollen sie wirklich beenden ? (2)', 'Information', MB_ICONQUESTION or MB_YESNO) = IDYES then begin close; end else begin MessageBox(Handle, 'Abgrbrochen durch Anwender', 'Information', MB_ICONINFORMATION or MB_OK); end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if MessageBox(Handle, 'Wollen sie wirklich beenden ? (3)', 'Form Close', MB_ICONWARNING or MB_YESNO) = IDYES then Action := caFree else Action := caNone; end; procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if MessageBox(Handle, 'Wollen sie wirklich beenden ? (4)', 'Form Close Query', MB_ICONWARNING or MB_YESNO) = IDYES then CanClose := TRUE else CanClose := FALSE; end; end. |
Re: probleme mit einer messagebox..
und wie sieht das jetzt bei einer andere funktion aus ?
zB:
Delphi-Quellcode:
? da bleibt das fenster auch stehen
if MessageDlg('Wollen sie wirklich beenden ?', mtConfirmation,[mbYes,mbNo],0) = mrYes then edit1.text := hi
else edit1.text := ho |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:36 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