AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CanClose

Ein Thema von Luki206 · begonnen am 2. Dez 2013 · letzter Beitrag vom 2. Dez 2013
Antwort Antwort
Luki206
(Gast)

n/a Beiträge
 
#1

CanClose

  Alt 2. Dez 2013, 16:21
Hi,
ich habe folgendes Problem: ich möchte das bei OnClose meines Fensters eine Überprüfung machen ob das Fenster wirklich geschlossen werden sollte, nur klappt das nicht ganz.. Ich muss dazu sagen ich möchte das wenn der Benutzer, ja wählt, das eine kleine .txt Datei erstellt werden soll. Bis jetzt sieht das ganze so aus:
Delphi-Quellcode:
procedure TFrmHaupt.FormClose(Sender: TObject; var Action: TCloseAction);
var
sl : TStringList;
s, d, z: String; mr: Integer; CanClose: Boolean;
begin
 mr := MessageDlg('Wirklich schließen???',mtConfirmation,[mbYes,mbNo],0);
   if mr = mrYes {mrNo} then begin
   if LblGesammt.Caption = '0then begin
   MessageDlg('Es konnte kein Gesammt Protokoll angelegt werden, da keine Waffeln gebucht worden sind.', mtWarning, [mbOK], 0);
   CanClose := true;
   end else begin
   d := DateToStr(date);
   z := System.SysUtils.FormatDateTime('"Gesammt Protokoll " hh-nn-ss dd, mm, yyyy' , (Now));
   s := (LblGesammt.Caption);
   sl:=TStringList.Create;
   try
     sl.Add('Es wurden '+s+' Waffeln produziert und verkauft.');
     sl.SaveToFile('c:\ProgramData\Crepesworker\Protokoll '+d+'\'+z+'.txt');
   finally
     sl.Free;
   end;
   end;
   CanClose := true;
end else
 CanClose := false;
end;
Das ganze dient eher nur zum 'spielen und experimentieren' als das es wirklich in gebrauch genommen wird
Danke
Gruß
Luki
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: CanClose

  Alt 2. Dez 2013, 16:23
Warum nimmst du nich den CloseQuery-Event?
Markus Kinzler
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#3

AW: CanClose

  Alt 2. Dez 2013, 16:28
geht es damit besser?

Edit: Ok, mit CloseQuery geht es
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#4

AW: CanClose

  Alt 2. Dez 2013, 16:37
Naja, jetzt ist nur das Problem: wie bekomme ich das in eine ButtonClick procedure? Weil irgendwie geht mein Fenster jetzt nicht zu wenn ich dann auf 'Ja' drück..
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.111 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: CanClose

  Alt 2. Dez 2013, 16:44
Zeig bitte nochmal deinen Quelltext wie er jetzt ist. Sowohl das OnCloseQuery-Event als auch das, was beim Druck auf deinen Button passiert.
  Mit Zitat antworten Zitat
Luki206
(Gast)

n/a Beiträge
 
#6

AW: CanClose

  Alt 2. Dez 2013, 16:50
OnCloseQuery:
Delphi-Quellcode:
procedure TFrmHaupt.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
sl : TStringList;
s, d, z: String; mr: Integer;
begin
 mr := MessageDlg('Wirklich schließen???',mtConfirmation,[mbYes,mbNo],0);
   if mr = mrYes {mrNo} then begin
   if LblGesammt.Caption = '0then begin
   MessageDlg('Es konnte kein Gesammt Protokoll angelegt werden, da keine Waffeln gebucht worden sind.', mtWarning, [mbOK], 0);
   CanClose := true;
   end else begin
   d := DateToStr(date);
   z := System.SysUtils.FormatDateTime('"Gesammt Protokoll " hh-nn-ss dd, mm, yyyy' , (Now));
   s := (LblGesammt.Caption);
   sl:=TStringList.Create;
   try
     sl.Add('Es wurden '+s+' Waffeln produziert und verkauft.');
     sl.SaveToFile('C:\ProgramData\Waffelworker\Protokoll '+d+'\'+z+'.txt');
   finally
     sl.Free;
   end;
   end;
   CanClose := true;
end else
 CanClose := false;
end;
Button (Action):
Delphi-Quellcode:
procedure TFrmHaupt.ActBeendenExecute(Sender: TObject);
var
sl : TStringList;
s, d, z: String; mr: Integer; CanClose: Boolean;
begin
 mr := MessageDlg('Wirklich schließen???',mtConfirmation,[mbYes,mbNo],0);
   if mr = mrYes {mrNo} then begin
   if LblGesammt.Caption = '0then begin
   MessageDlg('Es konnte kein Gesammt Protokoll angelegt werden, da keine Waffeln gebucht worden sind.', mtWarning, [mbOK], 0);
   CanClose := true;
   end else begin
   d := DateToStr(date);
   z := System.SysUtils.FormatDateTime('"Gesammt Protokoll " hh-nn-ss dd, mm, yyyy' , (Now));
   s := (LblGesammt.Caption);
   sl:=TStringList.Create;
   try
     sl.Add('Es wurden '+s+' Waffeln produziert und verkauft.');
     sl.SaveToFile('C:\ProgramData\Waffelworker\Protokoll '+d+'\'+z+'.txt');
   finally
     sl.Free;
   end;
   end;
   Close;
end else
 CanClose := false;
end;
Es ist beides fast identisch aber es geht nicht..

Geändert von Luki206 ( 2. Dez 2013 um 17:14 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:29 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