AGB  ·  Datenschutz  ·  Impressum  







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

TForm.Close

Ein Thema von jonny · begonnen am 8. Jan 2004 · letzter Beitrag vom 8. Jan 2004
Antwort Antwort
Seite 1 von 2  1 2      
jonny

Registriert seit: 15. Dez 2003
235 Beiträge
 
Delphi 7 Enterprise
 
#1

TForm.Close

  Alt 8. Jan 2004, 08:46
Hallo ich bau gerade an einem Programm in dem ich Formulare Dynamisch während der Laufzeit ertelle.

Mein Problem ist jetzt Folgendes also wenn ich das Formular jetzt schliesse

Code:
Form.Close;
dann kann ich keine Fenster mit dem gleichen Namen mehr erstellen warum?

Ist das Fenster nur unsichtbar?
Ich habe es auch mit

Code:
Form.Free;
versucht aber das liefert nur eine Fehlermeldeung was soll ich tun?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: TForm.Close

  Alt 8. Jan 2004, 08:48
Bevor du es neu öffnen kannst, musst du logischerweise vorher das Form-Objekt neu erzeugen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
jonny

Registriert seit: 15. Dez 2003
235 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: TForm.Close

  Alt 8. Jan 2004, 08:53
Ja das tue ich auch

Hiermal ein Beispiel aus dem Code:
Code:
procedure TForm1.irgendwasClick(Sender: TObject);
var TfSU: TfrmSendURL;
begin
  If Application.FindComponent('SUForm') = Nil Then
  begin
    Application.CreateForm(TfrmSendURL, TfSU);
    TfSU.Name:='SUForm';
    TfSU.lblUserName.Caption := 'Hahaha';
  end
  else
  begin
    (Application.FindComponent('SUForm') As TfrmSendURL).SetFocus;
  end;
end;
Beim ersten mal klappt alles aber wenn ich die Form Schliesse mit

Code:
Close
dann sagt er mir beim nächsten Click auf "irgendwas" das man kein Focus auf eine Unsichtbare Form setzen kann.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: TForm.Close

  Alt 8. Jan 2004, 09:01
Also kuck dir mal meinen Code an:
Delphi-Quellcode:
var
  Form1: TForm1;
  ZweiteForm: TForm;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Application.CreateForm(TForm2, ZweiteForm);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if Assigned(ZweiteForm) then
    ZweiteForm.Show;
end;
Wenn ich die zweite Form mit Close schließe, kann ich sie direkt mit dem zweiten Button wieder anzeigen lassen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
jonny

Registriert seit: 15. Dez 2003
235 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: TForm.Close

  Alt 8. Jan 2004, 09:07
Ja aber das soll nicht der Sin der Sache sein das Fenster soll komplett geschlossen werden das es nicht mehr da ist wenn ich es schliesse damit mit der meiner Methode ein neues erstellt werden kann es soll nur dann den Focus bekommen wenn es irgendwo hinten liegt aber noch nicht geschlossen wurde.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: TForm.Close

  Alt 8. Jan 2004, 09:11
Wenn es nur "hinten" ist dann existiert es ja. Dann frag ab, ob es visible ist. Man müsste dann noch prüfen, ob es minimier (IsIconic) ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
jonny

Registriert seit: 15. Dez 2003
235 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: TForm.Close

  Alt 8. Jan 2004, 09:15
Mit dem Focus setzen das functioniert ja es gibt nur ein Problem wenn ich es schliesse mit Close dann kann ich kein neues mit dem gleichen Namen erstellen weil das alte ja noch da ist wie kriege ich es ganz weg?

mit Free anstaat Close hab ich auch schon versucht aber ich krieg ne Fehlermeldung.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: TForm.Close

  Alt 8. Jan 2004, 09:25
Zitat von jonny:
wenn ich es schliesse mit Close dann kann ich kein neues mit dem gleichen Namen erstellen weil das alte ja noch da ist wie kriege ich es ganz weg?
Hm.
Delphi-Quellcode:
var
  Form1: TForm1;
  MyForm2: TForm;

implementation

{$R *.dfm}

uses
  Unit2;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Application.CreateForm(TForm2, MyForm2);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if Assigned(MyForm2) then
    MyForm2.Show;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  if Assigned(MyForm2) then
    MyForm2.Free;
end;
Mit Button1 erzeuge ich die zweite Form. Mit Button2 zeige ich sie an. Wenn ich sie jetzt mit Button3 wieder schließe / freigebe, kann ich sie mit Button1 wieder ohne Probleme erzeugen. Also irgendwas machst du da falsch, aber sehen tue ich es jetzt auch nicht.

Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
begin
  if (Assigned(MyForm2)) and (MyForm2.Visible) then
    MyForm2.BringToFront;
end;
Und wenn sie gerade nicht sichtbar ist, bekomme ich sie mit Button4 wieder "nach vorne".
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
galex

Registriert seit: 8. Jan 2004
4 Beiträge
 
#9

Re: TForm.Close

  Alt 8. Jan 2004, 09:45
Moin,

ich benutze folgendes:
var frmSendURL: TfrmSendURL; 1.Formular erzeugen
  Application.CreateForm(TfrmSendURL, frmSendURL); 2.Formular anzeigen
  frmSendURL.Show; 3.Formular schließen
  frmSendURL.Hide; {
anzeigen
schließen
anzeigen
schließen
anzeigen
}

4. Formular verniechten
  frmSendURL.Free; oder FreeAndNil(frmSendURL);
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: TForm.Close

  Alt 8. Jan 2004, 09:48
Hide macht das Formular nur unsichtbar, schließt es baer nicht, dies tut nur, wie der Name auch schon sagt, Close();.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:44 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