Delphi-PRAXiS

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/)
-   -   Delphi Frame.Parent := xyz ===> Schutzverletzung unter Vista (https://www.delphipraxis.net/103827-frame-parent-%3D-xyz-%3D%3D%3D-schutzverletzung-unter-vista.html)

DataCool 22. Nov 2007 11:23


Frame.Parent := xyz ===> Schutzverletzung unter Vista
 
Hi,

Delphi-Quellcode:
      LogF.add('Form created - BeforeCreate ChatwindowData','debug',15);
      // Vista Fehler irgentwo in den nächsten zeilen
      chatData := TChatWindowData.Create;
      try
        chatData.Form := newForm;
        chatData.Frame := TfraChatWindow.Create(newForm.pan_Frame);
        LogF.add('Frame created','debug',15);
        // hier tritt jetzt der Fehler auf(nur unter Vista)
        chatData.Frame.Parent := newForm.pan_Frame;
        LogF.add('Frame Parent set','debug',15);
      ......
Ich erzeuge eine Form mit einem Panel,
danach erzeuge ich einen Frame dem ich als Parent das Panel der Form geben möchte.
Läuft alles wunderbar, nur haben mich jetzt ein paar User des Programms darauf hingewiesen,
dass es unter Vista(egal welche Version) immer eine Schutzverletzung gibt.
Ich habe mir jetzt einen Testrechner organisiert, wo ich das ganze reproduzieren kann,
leider habe ich auf dem Rechner kein Delphi.
Deshalb die Eingrenzung des Fehlers über Logfile-Einträge :

22.11.2007 12:00:05:252 debug Level:015 Form created - BeforeCreate ChatwindowData
22.11.2007 12:00:05:267 Chat-Frame Level:015 OnCreate TfraChatWindow Leave
22.11.2007 12:00:05:267 debug Level:015 Frame created
22.11.2007 12:00:14:191 debug Level:015 Frame Parent set

Wie Ihr seht kommt der letzte Eintrag erst einige Sekunden später,
der Eintrag erscheind erst im Logfile wenn man die Schutzverletzung mit "OK"
bestätigt.
Außerdem springt das Programm beim Auftreten der Schutzverletzung NICHT ins Except,
sondern der Code läuft ganz normal weiter und das Programm/Anzeige/Frame auch.

Ich habe wirklich keine Ahnung woran es liegen könnte,
hat jemand eine Idee ? Wie gesagt der Code läuft unter jedem anderen Windows 100%,
nur unter Vista nicht.

Kann es vielleicht daran liegen das auf dem Frame ein dynamisch erzeugter TWebbrowser ist ?

Greetz DataCool

Deep-Sea 22. Nov 2007 12:24

Re: Frame.Parent := xyz ===> Schutzverletzung unter Vist
 
Zitat:

Zitat von DataCool
Außerdem springt das Programm beim Auftreten der Schutzverletzung NICHT ins Except [...]

Dann ist es wohl kaum eine Delphi-Exception.

Zitat:

Zitat von DataCool
Kann es vielleicht daran liegen das auf dem Frame ein dynamisch erzeugter TWebbrowser ist ?

Schon möglich, der ist nämlich etwas zickig, wenn er nicht sichtbar ist etc.
Versuch es doch einfach: Schmeiß ihn runter und schaue ob es dann geht :wink:

DataCool 22. Nov 2007 13:15

Re: Frame.Parent := xyz ===> Schutzverletzung unter Vist
 
Hi,

ja es ist der Webbrowser der den Stress verursacht,
ohne Webbrowser auf dem Frame tritt der Fehler nicht auf.
Nun gut jetzt werd ich mal die Nadel im Heuhaufen suchen,

Greetz DataCool

Deep-Sea 22. Nov 2007 13:19

Re: Frame.Parent := xyz ===> Schutzverletzung unter Vist
 
Zitat:

Zitat von DataCool
ja es ist der Webbrowser der den Stress verursacht,
ohne Webbrowser auf dem Frame tritt der Fehler nicht auf.
Nun gut jetzt werd ich mal die Nadel im Heuhaufen suchen,

Viel Spas :spin:
Versuche zB. nicht auf den WebBrowser zuzugreifen, bevor er sichtbar ist ...
(Aus solchen Gründen verwende ich den WebBrowser nicht mehr für wichtigere oder komplexe Dinge)

DataCool 22. Nov 2007 13:34

Re: Frame.Parent := xyz ===> Schutzverletzung unter Vist
 
Hi,

sichtbar ist der Webbrowser die ganze Zeit(der wird schon mit dem Frame erzeugt)

Aber ich habe den Fehler jetzt glaube ich gefunden :idea:

Die Form, auf der der Frame(incl. Webbrowser) plaziert werden soll,
erzeuge ich kurz davor dynamisch und setzte visible der Form schonmal auf True.
Erst dann erzeuge ich den Frame, allerdings hat die Form ein OnPaint Ereigniss,
wo auf den Webbrowser zugegriffen wird und das ohne Schutz/Sicherheitsabfrage
ob dieser schon existiert. :wall:

Thx, dafür mich auf den richtigen Weg bei der Suche zu bringen.

Greetz DataCool


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:10 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