Entwickler-Ecke

Sonstiges (Delphi) - BooleanVariable in allen Units benutzen?


p.a.t.r.i.k - Mo 17.12.07 23:19
Titel: BooleanVariable in allen Units benutzen?
Hallo,

ich Programmiere grade ein Spiel für die Schule und ich hab folgendes Problem:

Wenn ich auf meinen Button "Beenden" Klicke dann öffne ich ein neues Fenster
und stelle zur auswahl ob ich den Speilstand Speichern will, beennden will ohne zu speichern
oder den Vorgang abbrechen will.
Ich habe festgestellt, dass ich dieses zweite Fenster mehrmals öffnen kann.
Das problem hab ich gelöst indem ich eine BooleanVariable benutze


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
PROCEDURE TFScrabble.BeendenClick(Sender: TObject);
begin
  if Beenden_geklickt= False then begin
     Form3:=TForm3.Create(FScrabble);
     Form3.Show;
     Beenden_geklickt:=True;
  end;
end;


(Unter FormCreate wird die Variable auf := False gestellt)

JETZT hab ich aber das Problem, dass wenn ich im zweiten Fenster auf Abbrechen Klicke, ich das Fenster nicht mehr öffnen kann.
Ich muss also die Variable "beenden_geklickt" wieder auf :=false stellen, sobald ich auf Abbrechen klicke.
Das hab ich auch gemacht, aber Wenn ich das in der zum Fenster zugehörigen Form so deklariere, ist die Variable aber in der Form in der ich meinen BeendenButton habe nicht umgestellt worden....

Wie kann ich diese Variable jetzt also für alle Forms zugänglich machen?

Ich kann mir vorstellen, dass die Antwort völlig trivial ist, aber jetzt beginnen die Ferien und mein Lehrer wrid mir diese Frage wohl nicht beantworten ^^

Ich bedanke mich schonmal im Vorraus.

Mit freundlichen Grüßen
p.a.t.r.i.k

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


bflegel - Mo 17.12.07 23:30

Hallo Patrik,

versuche mal:


Delphi-Quelltext
1:
2:
Form1.Beenden_geklickt:=false;  
//oder Form2... je nach dem welche Deine "Haupt"-Unit ist.


bye bflegel


p.a.t.r.i.k - Mo 17.12.07 23:35

Funktioniert leider nicht
ich verändere ja lediglich den namen der Variable.....

trotzdem danke


bflegel - Mo 17.12.07 23:48

Hallo Patrik,

in den 'public'-Abschnitt schreibst Du die Boolean-Variable:


Delphi-Quelltext
1:
2:
3:
 public
    { Public-Deklarationen }
    beenden_geklickt : boolean;


Als Prozedur:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Beenden_geklickt= False then
    begin
      Beenden_geklickt := true;
      Form2.Showmodal;
      if beenden_geklickt then
      showmessage('true'else showmessage('false');
    end;
end;


Und in Deiner Form3 bei Abbruch:


Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm2.Button1Click(Sender: TObject);
begin
  Form1.beenden_geklickt := false;
  Form2.close;
end;


So gehts!

bye bflegel


Blawen - Di 18.12.07 00:25

Frage:
Wieso nimmst Du statt

Delphi-Quelltext
1:
Form3.Show;                    

nicht einfach

Delphi-Quelltext
1:
Form3.Showmodal;                    

?
Da entsteht die ganze Problematik gar nicht erst ;-)


p.a.t.r.i.k - Di 18.12.07 16:27

Danke vielmals für die Hilfe...
ich hab das Problem erfolgreich gelöst^^

Freundliche Grüße
p.a.t.r.i.k