AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Feststellen ob zweites Fenster geöffnet ist
Thema durchsuchen
Ansicht
Themen-Optionen

Feststellen ob zweites Fenster geöffnet ist

Ein Thema von _SolidSnake_ · begonnen am 12. Feb 2006 · letzter Beitrag vom 12. Feb 2006
Antwort Antwort
_SolidSnake_

Registriert seit: 3. Feb 2006
Ort: Pulheim
28 Beiträge
 
Delphi 2005 Architect
 
#1

Feststellen ob zweites Fenster geöffnet ist

  Alt 12. Feb 2006, 18:10
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
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Feststellen ob zweites Fenster geöffnet ist

  Alt 12. Feb 2006, 18:14
Zitat von _SolidSnake_:
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.
*g*
Die Idee an sich ist nicht schlecht, aber wie willst du auf ein Feld zugreifen, wenn die Klasse noch gar nicht existiert/schon zerstört ist ? Da du die Form aber sowieso nicht erstellst, sondern nur Show aufrufst, würde ich zu TForm.Visible raten .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Feststellen ob zweites Fenster geöffnet ist

  Alt 12. Feb 2006, 18:15
Standarmässig werden beide Formulare beim Start von Delphi erzeugt. Dass kannst Du unter Projekt->Optionen festlegen. d.h. Form2 ist bereits erzeugt, es wird nur beim Start noch nicht angezeigt. Deine Variable "Open" ist also immer True.

Überleg dir mal eine Alternativlösung
  Mit Zitat antworten Zitat
_SolidSnake_

Registriert seit: 3. Feb 2006
Ort: Pulheim
28 Beiträge
 
Delphi 2005 Architect
 
#4

Re: Feststellen ob zweites Fenster geöffnet ist

  Alt 12. Feb 2006, 18:24
Hallo Khabarakh

Wenn ich
 if Form2.Open = True then in
if Form2.Visible then ändere, schreibt er schonmal nurnoch wenn das Fenster wirklich offen ist

Danke

----------------------

Hallo Jelly

Da ist was wahres dran Das onCreate und die Variable kann ich dank Khabarakh kicken und das onDestroy tausch ich am besten gegen ein onClose, dann dürfte es gehen

Danke für die schnellen Antworten

Gruß
Micha
  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 03:09 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