![]() |
Warnen vor dem schließen
Delphi-Quellcode:
Hallo,
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. 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? |
AW: Warnen vor dem schließen
Delphi-Quellcode:
Wäre ein einfacher und sauberer Weg.
procedure TForm1.OnCloseQuery(Sender: TObject; CanClose: Boolean);
begin if MessageDlg('Echt schließen?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then CanClose := false; end; |
AW: Warnen vor dem schließen
|
AW: Warnen vor dem schließen
Und wenn man den Vorgabewert von CanClose nicht kennt:
Delphi-Quellcode:
CanClose := MessageDlg(...) = mrYes;
|
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.
|
AW: Warnen vor dem schließen
Guten Morgen auch :lol:
|
AW: Warnen vor dem schließen
Morgen
|
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:
Du könntest die Abfrage auch mit den netten Beiträgen meiner Vorredner kombinieren, falls trotzdem geschlossen werden darf.
if (r = z) then
begin Close; end else begin ShowMessage('Erst zuende raten.'); end; 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 |
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.
|
AW: Warnen vor dem schließen
Zitat:
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 ;) |
AW: Warnen vor dem schließen
Wir reden von dem Button aus dem gezeigten Quelltext, oder? Da würde dann jedesmal die Message kommen, programmier das doch schnell mal eben nach.
|
AW: Warnen vor dem schließen
Zitat:
Also wenn er richtig geraten hat soll es gar nicht erst angezeigt werden, sonst schon. Müsste man dann um das ganze eine If-schleife laufen lassen? Könnte man das nicht einfach ans Ende dieser if bedingung setzen:
Delphi-Quellcode:
if r < z then Label2.Caption := 'Zu niedrig'
else if r > z then Label2.Caption := 'Zu hoch' |
AW: Warnen vor dem schließen
*Hahaaa* da isse wieder (
![]() Zum Problem: merk Dir doch einfach in einer Boolean-Variablen, ob richtig geraten wurde. Du setzt sie am Spielanfang auf false und bei Treffer auf true. Nun musst Du nur noch prüfen, ob sie false ist und in dem Fall nachfragen. |
AW: Warnen vor dem schließen
Du hast gut reden.
ich brauch schon irgendwie ein Beispiel. Bin total neu darin und hab noch erstaunlich wenig Ahnung, wie man immer wieder sieht :D |
AW: Warnen vor dem schließen
Delphi-Quellcode:
Ohne Gewähr, da aus dem Kopf getippt.
type
TForm1 = class(TForm) ... private FTreffer: Boolean; ... end; ... //im ButtonClick: if r < z then Label2.Caption := 'Zu niedrig' else if r > z then Label2.Caption := 'Zu hoch' else begin Label2.Caption := 'Erraten'; FTreffer := true; end; ... procedure TForm1.CloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose := FTreffer or (MessageBox(0, 'Spiel wirklich abbrechen?', 'Bestätigen', MB_YESNO or MB_ICONQUESTION) = idYes); end; |
AW: Warnen vor dem schließen
Zitat:
Delphi-Quellcode:
Edit:
procedure TForm1.Button1Click(Sender: TObject);
var a: Byte; Label Schleife; begin a := 0; Schleife: a := a + 1; ShowMessage('Durchgang ' + IntToStr(a)); if a < 5 then Goto Schleife; ShowMessage('Das waren ' + IntToStr(a) + ' Schleifen'); end; Das mit der Schleife war natürlich nur ein Scherz, nur hat keiner reagiert. Also mache ich es bevor es einer in paar Wochen macht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 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