Hallo zusammen.
Ich hab mir zum ausprobieren ein kleines Programm mit zwei Formularen geschrieben. Im zweiten Formular ist ein TMemo und ein Button, womit ich das TMemo leeren kann. Im ersten Formular sind zwei Buttons, eins um etwas in das TMemo von Formular zwei zu schreiben und eins um das zweite Formular zu öffnen.
Nun habe ich folgendes Problem. Ich habe im Form2 eine Variable "Open" als Boolean angelegt, diese Variable soll beim onCreate auf True und beim onDestroy auf False gesetzt werden, zusätzlich soll beim onDestroy das Memo geslöscht werden, was er aber nicht macht.
Zudem habe ich im Form.1 eine If-Abfrage, das er nur was in das Memo von Form.2 schreiben soll, wenn die Variable "Open" auf True gesetzt ist, aber auch das missachtet er einfach und schreibt munter drauf los. Eigentlich sollte er nur Dinge ins Memo schreiben, wenn das Form2 auch wirklich offen ist.
Die beiden Codes sehen wie folgt aus:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2;
type
TForm1 =
class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
Open : Boolean;
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if Form2.Open = True
then
Form2.Memo1.Lines.Add('
Eine Textzeile');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.Show;
end;
end.
Delphi-Quellcode:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 =
class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
Open : Boolean;
{ Public-Deklarationen }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
Open := True;
end;
procedure TForm2.FormDestroy(Sender: TObject);
begin
Open := False;
Memo1.Clear;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
Memo1.Clear;
end;
end.
Kann mir vielleicht jemand verraten was ich falsch gemacht habe ?
Ich arbeite leider noch nicht solange mit Delphi und hab schon versucht das Problem zu finden aber komm auf keine Lösung.
Gibt es eine leichtere Möglichkeit zu sehen ob das Form2 geöffnet ist ?
Gruß
Micha