Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Verschwindende Fenster unter Delphi 7 Windows 7
Red-Flash - Di 12.10.10 09:50
Titel: Verschwindende Fenster unter Delphi 7 Windows 7
Wie im Titel bereits genannt verschwinden ab und zu die NICHT modalen Fenster,
die wie folgt erzeugt werden.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| if not Assigned (Formular) then begin Formular := TFormular .Create (Owner); end;
with Formular do begin Show; end; |
Ab und zu bedeutet :
Es kann sein, das man dieses Fesnter den ganzen Tag auf und zu machen kann,
es kann aber auch sein, das es sofort verschwindet.
Wenn dies passiert, kann man mit "ALT Leertaste", das Fenster zwar focussieren (Man sieht den Rahmen),
und bewegen, aber NICHT sehen....
Man muß dann den Rechner neu starten, dann geht es wieder ne Weile.
Mit Win-XP KEIN Problem....
Hat auch jemand dieses Problem?
Daniel L. - Di 12.10.10 10:27
Was soll denn TFormular sein?
Ein Abkömmling von TForm?
Red-Flash - Di 12.10.10 11:46
TFormular ist das aktuelle Formular
wenn ich einem Formular den Namen "MeinForm" gebe, mach er daraus den Type "TMeinForm"
Owner ist der Self, des Formular, von welchem ich das neue Formular erzeuge.
Daniel L. - Di 12.10.10 12:57
Hm, bei mir scheint es zu funktionieren, hab auch D7 und W7, aber auf klassischen Stil geschaltet. (Kein Aero oder wie das heisst).
Gruss: Daniel
Red-Flash - Di 12.10.10 15:57
Das Win2000 Schema haben wir auch schon getestet,
aber ohne Erfolg...
Es passiert trotzdem.
Red-Flash - Mi 13.10.10 09:43
Andere Frage :
Wie erzeugt ihr untergeordnete nicht Modale Fenster ?
Daniel L. - Mi 13.10.10 23:07
Entweder:
Durch Start von Dephi7 wird form1 mit Unit1 creiert.
Dann: Datei/Neu/Forumular
Es entsteht Form2 und Unit2.
Unit2 in Unit1 unter uses...einbinden
dann Code in Unit1 : form2.show;
(so hatte ich dein Problem getestet)
Oder:
Durch Start von Dephi7 wird form1 mit Unit1 creiert.
in der Class TForm1 eine neue form deklarieren:
MyFormular : TForm;
dann Code:
Myformular := TForm.Create(self);
MyFormular.Show;
Ich habe auch deinen Code im Threadstart nicht wirlich verstanden.
Gruss: Daniel
jaenicke - Do 14.10.10 05:03
Daniel L. hat folgendes geschrieben : |
Ich habe auch deinen Code im Threadstart nicht wirlich verstanden. |
Das ist doch der, denn du gerade selber gepostet hast, nur dass vor dem Erzeugen noch geprüft wird, ob das schon passiert ist.
Bezogen auf das Problem rate ich dazu einfach immer das Fenster neu zu erzeugen und im Fenster in OnClose Action auf caFree zu setzen.
Außerdem solltest du einmal schauen, ob FastMM vielleicht Speicherprobleme findet, denn das kann dann einige Probleme verursachen. Die integrierte Prüfung gibt es in Delphi 7 noch nicht.
Red-Flash - Do 14.10.10 09:49
jaenicke hat folgendes geschrieben : |
Bezogen auf das Problem rate ich dazu einfach immer das Fenster neu zu erzeugen und im Fenster in OnClose Action auf caFree zu setzen.
|
Ich dachte das Freigeben on Close brauche ich nicht extra zu erwähnen da dies selbstverständlich ist.
Das Fester wird immer beu erzeugt,
nur hat Windows 7 nicht immer Lust dieses auch anzuzeigen
Obwohl es sogar StayOnTop ist.
Es ist als ob vieleicht das Handle verloren geht, oder so was.
jaenicke - Do 14.10.10 10:39
Red-Flash hat folgendes geschrieben : |
Ich dachte das Freigeben on Close brauche ich nicht extra zu erwähnen da dies selbstverständlich ist. |
Das passt aber nicht zu deinem Code. Dann darfst du Formular nicht auf Assigned prüfen. Denn durch die Freigabe ist die Variable nicht notwendigerweise nil...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!