AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit verschiedenen Forms

Ein Thema von DomPerle · begonnen am 17. Apr 2018 · letzter Beitrag vom 20. Apr 2018
Antwort Antwort
Seite 2 von 3     12 3      
DomPerle

Registriert seit: 26. Apr 2017
20 Beiträge
 
#11

AW: Problem mit verschiedenen Forms

  Alt 18. Apr 2018, 09:12
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;
  Mit Zitat antworten Zitat
DomPerle

Registriert seit: 26. Apr 2017
20 Beiträge
 
#12

AW: Problem mit verschiedenen Forms

  Alt 18. Apr 2018, 09:18
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
  Mit Zitat antworten Zitat
DomPerle

Registriert seit: 26. Apr 2017
20 Beiträge
 
#13

AW: Problem mit verschiedenen Forms

  Alt 18. Apr 2018, 10:04
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?
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#14

AW: Problem mit verschiedenen Forms

  Alt 18. Apr 2018, 11:08
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#15

AW: Problem mit verschiedenen Forms

  Alt 18. Apr 2018, 11:31
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?
$2B or not $2B
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
972 Beiträge
 
Delphi 6 Professional
 
#16

AW: Problem mit verschiedenen Forms

  Alt 18. Apr 2018, 13:23
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.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Problem mit verschiedenen Forms

  Alt 18. Apr 2018, 13:35
ot
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
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#18

AW: Problem mit verschiedenen Forms

  Alt 18. Apr 2018, 13:49
Ich aber hier eine Form, die braucht über 5 Sekunden, im FormDesigner noch mehr, und dann anschließend noch das Laden der Daten (DBGrids)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: Problem mit verschiedenen Forms

  Alt 18. Apr 2018, 13:56
@himitsu: Ja eben, 250+110 ist ja immer noch unter 1000ms (=1 Sekunde)
2500ms plus 1100ms wäre realistischer.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
DomPerle

Registriert seit: 26. Apr 2017
20 Beiträge
 
#20

AW: Problem mit verschiedenen Forms

  Alt 18. Apr 2018, 18:17
Das Thema wurde verschoben und ich kann die Antworten auf meine Fragen nicht mehr findn, was nun?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      

 

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 12:20 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