Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Warnen vor dem schließen (https://www.delphipraxis.net/166622-warnen-vor-dem-schliessen.html)

schmitty89 22. Feb 2012 09:46

Warnen vor dem schließen
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);

  public
    z :integer;
    versuche :integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.FormCreate(Sender: TObject);
 begin
   randomize;
   z := random(100)+1;
   versuche :=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
 var r : integer;

 begin
   r := StrToInt(edit1.Text);
   versuche :=versuche+1;

       if r < z then Label2.Caption := 'Zu niedrig'
   else if r > z then Label2.Caption := 'Zu hoch'
   else if r = z then Label2.Caption := 'Erraten';
   Label4.Caption :=IntToStr(Versuche);
 end;
 end.
Hallo,

dieses mal soll gewarnt werden wenn jemand auf schließen klickt- nun meine Frage:

Wie verbinde ich die Schließenfunktion mit einem Popup oder wie würdet ihr das umsetzen?

Medium 22. Feb 2012 09:48

AW: Warnen vor dem schließen
 
Delphi-Quellcode:
procedure TForm1.OnCloseQuery(Sender: TObject; CanClose: Boolean);
begin
  if MessageDlg('Echt schließen?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then
    CanClose := false;
end;
Wäre ein einfacher und sauberer Weg.

Sherlock 22. Feb 2012 09:49

AW: Warnen vor dem schließen
 
Delphi-Referenz durchsuchenOnCloseQuery
Edit: Mift, Medium war schneller...

Sherlock

DeddyH 22. Feb 2012 09:51

AW: Warnen vor dem schließen
 
Und wenn man den Vorgabewert von CanClose nicht kennt:
Delphi-Quellcode:
CanClose := MessageDlg(...) = mrYes;

Popov 22. Feb 2012 09:53

AW: Warnen vor dem schließen
 
Was verstehst du unter schließen? Programm beenden? Wenn ja, im Hauptformular unter Ereignisse in OnCloseQuery der Variable CanClose auf False setzten, oder eine Abfrage einbauen. Und wozu ein PopUp? PopUp kennt die Methode Popup(X, Y). Damit kannst du die Position steuern.

DeddyH 22. Feb 2012 09:54

AW: Warnen vor dem schließen
 
Guten Morgen auch :lol:

Popov 22. Feb 2012 09:57

AW: Warnen vor dem schließen
 
Morgen

Jonas Shinaniganz 22. Feb 2012 10:50

AW: Warnen vor dem schließen
 
Soweit Ich aus dem letzten Thema noch weiß, wolltest du diese Abfrage nur haben, falls der Vorgang noch läuft. (dh. die Zahl noch nicht erraten wurde).
Delphi-Quellcode:
if (r = z) then
begin
  Close;
end
else
begin
  ShowMessage('Erst zuende raten.');
end;
Du könntest die Abfrage auch mit den netten Beiträgen meiner Vorredner kombinieren, falls trotzdem geschlossen werden darf.
Hier müsste man wirklich erst zuenderaten. Allerdings beachten die anderen Lösungen nicht, das nur gefragt wird wenn die Zahl noch nicht erraten ist.

Grüße

DeddyH 22. Feb 2012 10:55

AW: Warnen vor dem schließen
 
Bei jedem Klick auf den Button eine Message, dass ich erst zu Ende raten soll, obwohl ich nichts Gegenteiliges signalisiert habe? Das würde mich als Anwender aber sehr verwirren.

Jonas Shinaniganz 22. Feb 2012 11:00

AW: Warnen vor dem schließen
 
Zitat:

Zitat von DeddyH (Beitrag 1152290)
Bei jedem Klick auf den Button eine Message, dass ich erst zu Ende raten soll, obwohl ich nichts Gegenteiliges signalisiert habe? Das würde mich als Anwender aber sehr verwirren.


Ehrlich? Also wenn Ich als Anwender vom Programm darüber informiert werde, dass ein Vorgang noch nicht beended wurde, finde Ich das nicht allzuweit hergeholt. Eher okay ^_^

Allerdings sollte es nicht 'erst zu Ende raten' heißen sondern vielleicht ein Messagefenster aufrufen, so wie Ihr es oben gezeigt habt bei dem dann trotzdem geschlossen werden kann.
Dann könnte man auch noch höflicher Fragen.

So meinte ich des ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57 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