Delphi-PRAXiS

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 TMemo nicht in OnClose verfügbar? (https://www.delphipraxis.net/120016-tmemo-nicht-onclose-verfuegbar.html)

Berlinermauer 4. Sep 2008 13:35


TMemo nicht in OnClose verfügbar?
 
Hallo DP'ler,

Ich arbeite gerade an einem Programm das alle Ereignisse loggt.

Soweit so gut:
Delphi-Quellcode:
memo_log.Lines.Add('blah');
Wenn es Jemand nun schließt (aufs X klickt),wird es nicht gespeichert ->
Delphi-Quellcode:
memo_log.Lines.SaveToFile('logfile.log')
Dies ist der Punkt : Er sagt "memo_log ist nicht definiert". Wenn ich jetzt aber "procedure BTN.Click()" mache, kann ich darauf zugreifen.

Memo_log ist in
Delphi-Quellcode:
"type memo_log: TMemo;"
definiert, aber scheint nicht in OnCreate oder OnClose verfügbar.

Was kann ich tun?

sirius 4. Sep 2008 13:37

Re: TMemo nicht in OnClose verfügbar?
 
"type memo_log: TMemo;" ist ein ungültiger Ausdruck :gruebel:

Berlinermauer 4. Sep 2008 13:39

Re: TMemo nicht in OnClose verfügbar?
 
ja, habs nur aus dem Hirn abgeschrieben. In echt ist es so :

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    ApStatus: TLabel;
   [...] Mehr definitionen
    shutdown: TButton;
    Log_memo: TMemo;
private
    { Private-Deklarationen }
public
    { Public-Deklarationen }
end;

sirius 4. Sep 2008 13:41

Re: TMemo nicht in OnClose verfügbar?
 
Im OnClose dürfte noch alles zur Verfügung stehen. Hmm?

Berlinermauer 4. Sep 2008 14:09

Re: TMemo nicht in OnClose verfügbar?
 
Delphi-Quellcode:
procedure Form1.OnClose();
begin
Log_memo.Lines.SaveToFile('log.log');
end;
Das ist mein Code, aber er sagt log_memo undefiniert, lines undef. und savetofile..

liegt das vllt daran dass die Form schon weg ist?

taaktaak 4. Sep 2008 14:14

Re: TMemo nicht in OnClose verfügbar?
 
Versuch doch mal OnCloseQuery()

STS301 4. Sep 2008 14:17

Re: TMemo nicht in OnClose verfügbar?
 
es sollte aber auch so funktionieren, hast du den code jetzt selbst geschrieben oder aus deinem Formular kopiert?

sirius 4. Sep 2008 14:19

Re: TMemo nicht in OnClose verfügbar?
 
Wieso hat denn OnClose keinen Parameter?

DeddyH 4. Sep 2008 14:23

Re: TMemo nicht in OnClose verfügbar?
 
Außerdem heißt das AFAIR FormClose.

STS301 4. Sep 2008 14:25

Re: TMemo nicht in OnClose verfügbar?
 
Zitat:

Zitat von sirius
Wieso hat denn OnClose keinen Parameter?

deswegen habe ich ja gefragt ob er den gerade selbst geschrieben hat, weil außer den Parameter steht auch Form1 statt TForm1

Berlinermauer 4. Sep 2008 14:49

Re: TMemo nicht in OnClose verfügbar?
 
Delphi-Quellcode:
procedure OnCloseQuery();
begin
Log_memo.Lines.SaveToFile('log.log');
end;
Code:
Nichtdeklarierter Bezeichner Log_memo in zeile 46 (46:1)
Nichtdeklarierter Bezeichner Lines in zeile 46 (46:10)
Nichtdeklarierter Bezeichner Add in zeile 46 (46:16)

Edit : hab erst jetzt eure Antworten gesehen :

FormClose ist doch die Aufforderun zu schließen (wie in andere Sprachen Form1.Exit())
FormOnClose soll noch vorher was abfangen.,..


TForm1 teste ich danke.

Und inwiefern Parameter? gibt es da welche? *such*

melde mich mit einem edit²


edit2:

ok es ist FormClose in einem Help Beitrag von msdn gestanden, dachte es sei anders.

d.h.
Delphi-Quellcode:
procedure TForm1.CloseForm(Sender: TObject; var Action: TCloseAction);
begin
Log_memo.Lines.SaveToFile('log.log');
Action := caFree
end;
Wurde bis auf die Log_memo.. direkt übernommen, allerdings stand das für Pascal und nicht für Delphi.

So nun sagt er dass es Closeform oder Formclose (egal) nicht gibt, ich kann zwar Close verwenden dann sind wir aber beim oberen Problem

Mackhack 4. Sep 2008 15:01

Re: TMemo nicht in OnClose verfügbar?
 
Zitat:

Zitat von Berlinermauer
Und inwiefern Parameter? gibt es da welche? *such*

Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
So siehts bei mir aus :-)

Berlinermauer 4. Sep 2008 15:09

Re: TMemo nicht in OnClose verfügbar?
 
Achso^^ ich hatte das ja am Anfang mit OnClose und das ist ja ein Event und keine Methode in dem Sinne.


es ist zum haareraufen... warum nimmt er es nur nicht, Kann das nicht sein das die Variablen erst später definiert werden? oder irgendwie dass OnClose und so nichts mit der Applikation an sich zu tun haben sonder eigene variabeln haben?

Mackhack 4. Sep 2008 15:17

Re: TMemo nicht in OnClose verfügbar?
 
Mal den Debugger genommen um zu sehen wo er hingeht?

Berlinermauer 4. Sep 2008 15:24

Re: TMemo nicht in OnClose verfügbar?
 
bekomme ja vorher einen Syntax Error.


Habe es versucht in globals reinzuladen oder so.

irgenwie muss ich das anders definieren :gruebel:

sirius 4. Sep 2008 15:34

Re: TMemo nicht in OnClose verfügbar?
 
Ich glaube dir fehlt folgende Vorgehensweise:

Gehe mal auf die Form, dann auf den Objektinspector und dort die Registerkarte Ereignisse. Dann machst du einen Doppelklick auf OnClose und dort, wo jetzt der Cursor steht schreibst du deine Zeile hinein.

Berlinermauer 4. Sep 2008 15:37

Re: TMemo nicht in OnClose verfügbar?
 
Danke sirius..


Es gibt Tage da sollte man nicht aus dem Bett...

Ich hatte es Manuell eingetippt ^^ und dabei vergessen sie procedure und so zu definieren =)


1000 thnx
:dp:

Mackhack 4. Sep 2008 15:41

Re: TMemo nicht in OnClose verfügbar?
 
Syntax Error weil der Header nicht korrekt ist?


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