Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Problem mit verschiedenen Forms (https://www.delphipraxis.net/196038-problem-mit-verschiedenen-forms.html)

DomPerle 18. Apr 2018 08:12

AW: Problem mit verschiedenen Forms
 
Bin begeistert, erstes Problem gelöst durch
if Form3=nil then
begin
Form3 := TForm3.Create( Self );
end;
Form3.Show;

Nun aber zum 2. Problem, wenn ich mit D'Click ein neues Member in Form1 auswähle, sollen Form3 und/oder Form4 geclosed werden. Da tritt die Schutzverletzung auf.
Der Befehl den ich verwende Form3.Close; Form4.Close;

DomPerle 18. Apr 2018 08:18

AW: Problem mit verschiedenen Forms
 
Habe gerade noch was anderes probiert und nun habe ich keine AccessViolation mehr und der Ablauf verhält sich nun so, wie ich ihn mir gedacht habe.
if Form3<>nil then
Form3.Close;
Vielen Dank an alle

DomPerle 18. Apr 2018 09:04

AW: Problem mit verschiedenen Forms
 
Jetzt habe ich mich so gefreut, doch nun geschieht noch was unangenehmes.

Nun aber zum 2. Problem, wenn ich mit D'Click ein neues Member in Form1 auswähle, sollen Form3 und/oder Form4 geclosed werden
Das klappt ja alles wunderbar, doch offensichtlich ist nach dem Closen Form3 bzw. Form4 immer ungleich nil, denn es wird kein neues Fenster mehr erstellt und somit erfolgt auch keine neue Aufbereitung.
Versuche mit Form3.Free; oder Form3.Destroy; ergeben wieder die AccessViolation. Was nun?

günni0 18. Apr 2018 10:08

AW: Problem mit verschiedenen Forms
 
Zitat:

denn es wird kein neues Fenster mehr erstellt und somit erfolgt auch keine neue Aufbereitung.
Ist die Aufbereitung im OnCreate-Event? Wenn ja, muss das selbstverständlich woanders hin.

himitsu 18. Apr 2018 10:31

AW: Problem mit verschiedenen Forms
 
Zitat:

Delphi-Quellcode:
if Form3<>nil then
Form3.Close;

Wenn die Form nicht nur geschlossen, sondern auch freigegeben wird: Da die Variable nicht auf nil gesetzt wird, knallt es dann beim zweiten Mal.

Da die Form nur geschlossen wird und nicht freigegeben (Free oder caFree im OnClose): bleibt die Form im Speicher, quasi als Speicherleck?

HolgerX 18. Apr 2018 12:23

AW: Problem mit verschiedenen Forms
 
Hmm..

Baue deine Forms um!

Verschiebe alles, was Du aktuell zur Aufbereitung im OnCreate machst in eine eigene Function (z.B. ExecuteWork), welche die Arbeit macht.

in deinem Buttonclick kommt dann nur noch

Delphi-Quellcode:
if Form3=nil then
begin
  Form3 := TForm3.Create( Self );
end;
Form3.Show;
Form3.ExecuteWork;
Wenn die Form dann geschlossen (Close) wird, ohne Free, würde diese durch das show einfach nur wieder visible gemacht und das ExecuteWork würde die Datenaufbereitung durchführen.
Das Close setzt (wenn nicht caFree im OnClose gesetzt wird) die Form nur auf Visible := False.

Dem ExecuteWork könntest Du noch weitere Parameter mitgeben, so dass sich das Form3 vielleicht gar nicht am Form1 bedienen muss, sondern komplett autark arbeitet.

KodeZwerg 18. Apr 2018 12:35

AW: Problem mit verschiedenen Forms
 
ot
Zitat:

Zitat von günni0 (Beitrag 1399584)
ich beispielsweise habe 29 und die werden innerhalb 250 Millisekunden geladen. Bis die vom Nutzer eingestellte Sprache übernommen und allen Einstellungen geladen wurden, noch einmal 110 Millísekunden.

Wie kommst Du auf diese Werte? Ich habe mir mal Spassenshalber ein Projekt erstellt mit 28 zusätzlichen Forms.
Auf jeder Form ist nur ein Label was beim Programmstart umbenannt wird.
Das umbennen erfolgt in einer Procedure für alle Forms nachdem diese erstellt wurden.
In der MainForm (das gibt es 2 Labels) werden mir die MS fürs erstellen der Fenster und fürs umbennen angezeigt.
Mit 250ms + 110ms komme ich absolut nicht hin.
Nutzt Du einen Super-Rechner mit 10 Cores oder so?
/ot

himitsu 18. Apr 2018 12:49

AW: Problem mit verschiedenen Forms
 
Ich aber hier eine Form, die braucht über 5 Sekunden, im FormDesigner noch mehr, und dann anschließend noch das Laden der Daten (DBGrids)

KodeZwerg 18. Apr 2018 12:56

AW: Problem mit verschiedenen Forms
 
@himitsu: Ja eben, 250+110 ist ja immer noch unter 1000ms (=1 Sekunde)
2500ms plus 1100ms wäre realistischer.

DomPerle 18. Apr 2018 17:17

AW: Problem mit verschiedenen Forms
 
Das Thema wurde verschoben und ich kann die Antworten auf meine Fragen nicht mehr findn, was nun?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 Uhr.
Seite 2 von 3     12 3      

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