AGB  ·  Datenschutz  ·  Impressum  







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

Fenster erstellt bzw. sichtbar !?

Ein Thema von dor557 · begonnen am 19. Apr 2007 · letzter Beitrag vom 24. Apr 2007
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von dor557
dor557

Registriert seit: 24. Okt 2004
Ort: Walldorf
197 Beiträge
 
Delphi 10.1 Berlin Starter
 
#11

Re: Fenster erstellt bzw. sichtbar !?

  Alt 21. Apr 2007, 03:31
Zitat von uwewo:

Falls Du Daten aus dem Form auslesen möchtest, solltest Du es vor Release und NIL tun.

Wenn es Dir um verschiedene Instanzen der Form geht, verwende doch einfach MDIChilds!
Damit könntest Du ein zweites Form öffnen und nach dem auslesen das erste schliessen.
Der entscheidende Tipp kam nun MDIChilds

Ich hatte das Formular sowiso schon als MDIChild gesetzt, nur noch nicht die Ganzen Möglichkeiten entdeckt. Bzw gewusst wo ansetzen.

Nun habe ich das Folgender massen gelöst :

Delphi-Quellcode:
   MainForm.RichEdit1.Lines.Clear;
   MainForm.RichEdit1.text := ParamBlobToStr(lpData);
   if not (length(MainForm.RichEdit1.Lines[0]) > 1) then
   begin
     MainForm.RichEdit1.Lines.Add(ParamStr(1));
   end;
   if (length(MainForm.RichEdit1.lines[0]) > 2) then
   with MainForm do
   begin
     XMLopenF.FileName := MainForm.RichEdit1.Lines[0];
     AuswahlPanel.Visible := false;
     if MDIChildCount > 0 then
       for i:=0 to MDIChildCount - 1 do
         MDIChildren[i].Close;
      xmlDatenF := TxmlDatenF.create(MainForm);
      xmlDatenF.Show;
   end;
So habe ich auch keine Fehlermeldungen mehr.

Mal eine Frage bezüglich dem Befehl Tform.Create....

Mein Alter Herr hatte damals immer mit Create(self) gearbeitet...

Das das nicht egal ist weiss ich aber in wie weit beeinflusst das den verlauf des Programmes wenn ich anstatt create(Application) dann Create(MainForm) mache oder hat das keine direkte Bedeutung ??

Aber sinnvoller ist es denke ich alle Male... oder ist das sogar bei einer MDI Anwendung vorraussetzung ??

Gruss Sascha
Sascha Nickel
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#12

Re: Fenster erstellt bzw. sichtbar !?

  Alt 21. Apr 2007, 03:44
Warum verwendet ihr immer das Application ?

Warum nicht so :

  frm := Tfrm.Create (Self); Natürlich unter Optionen "Form automatisch erzeugen" ausschalten. Jetzt ist die Form da. Damit sie wieder sauber verschwindet im FormClose noch CloseAction auf caFree setzen. Für mehrere Instanzen eben die Form-Namen durchnummerieren. Mit FindComponent etc.

Auf den roten Kasten ist kein Verlass. Wer ist Dein alter Herr ? Der sagt zumindest sinngemäß dasselbe wie ich. Das mit dem MDI sind allenfalls Randeffekte.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von dor557
dor557

Registriert seit: 24. Okt 2004
Ort: Walldorf
197 Beiträge
 
Delphi 10.1 Berlin Starter
 
#13

Re: Fenster erstellt bzw. sichtbar !?

  Alt 21. Apr 2007, 08:49
Gegenfrage :

Warum Self ?? Was bewirkt es ??

Gruss Sascha
Sascha Nickel
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14

Re: Fenster erstellt bzw. sichtbar !?

  Alt 22. Apr 2007, 00:27
Gegenfrage von mir : geht Deine F1-Taste nicht ?

Application ist so ziemlich das globalste, was es gibt. Da wurde vor längerem aus gutem Grunde die Sichtbarkeit vermindert, private usw. eingeführt und was wird benutzt ? Das was dermaßen global ist, daß es buchstäblich an jeder Ecke verbogen werden kann. Dabei ist das nur in Ausnahmefällen nötig, z.B. wenn unbedingt Spaghetti-Code hergestellt werden muss.
Gruß
Hansa
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#15

Re: Fenster erstellt bzw. sichtbar !?

  Alt 22. Apr 2007, 13:33
Zusammenfassung des Threads:

1. Wenn du Release aufrufst, dann setzt dieses deine globale Variable der Form nicht auf NIL zurück und deine nächsten Abfragen auf Nil sagen, dass die Instanz existiert (da eine alte Adresse drin steht in der Variablen) und damit rufst eine tote Instanz auf.
2. Self ist die Instanz der Klasse in der du dich gerade befindest. Wenn du nun eine Form instanziierst und Self als Owner übergibst, dann wird das Formular bei der Freigabe deines Formulars (wo du es erstellst) mit freigegeben. Bei Application, wenn diese beendet wird. Bei letzterem kann es aber zu Problemen kommen: Ich habe es in meiner App nun grundsätzlich unterlassen Dialoge und andere Formulare (bis auf die MainForm) mit dem Application anzulegen, da es beim Schliessen der Applikation sehr oft zu Abstürzen kam. Grund dafür war einfach nur, dass TApplication die Formulare in einer (zufälligen) Reihenfolge abräumt wo dann Formulare nicht mehr existieren obwohl sie früher/später als andere Formulare gebaut wurden. Wenn ein Formular in einer anderen Klasse instaziiert wurde und an der gleichen Stelle beim abräumen des "Parents" auch wieder freigegeben wurde, dann knallte es deftig mit Application als Owner.
  Mit Zitat antworten Zitat
Benutzerbild von dor557
dor557

Registriert seit: 24. Okt 2004
Ort: Walldorf
197 Beiträge
 
Delphi 10.1 Berlin Starter
 
#16

Re: Fenster erstellt bzw. sichtbar !?

  Alt 24. Apr 2007, 13:12
Danke für die ganzen antworten.

Haben mir sehr geholfen !

Gruss Sascha
Sascha Nickel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 16:28 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