![]() |
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; |
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 |
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? |
AW: Problem mit verschiedenen Forms
Zitat:
|
AW: Problem mit verschiedenen Forms
Zitat:
Da die Form nur geschlossen wird und nicht freigegeben (Free oder caFree im OnClose): bleibt die Form im Speicher, quasi als Speicherleck? |
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:
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.
if Form3=nil then
begin Form3 := TForm3.Create( Self ); end; Form3.Show; Form3.ExecuteWork; 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. |
AW: Problem mit verschiedenen Forms
ot
Zitat:
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 |
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)
|
AW: Problem mit verschiedenen Forms
@himitsu: Ja eben, 250+110 ist ja immer noch unter 1000ms (=1 Sekunde)
2500ms plus 1100ms wäre realistischer. |
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 04:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz