RAD 2009, TCppWebBrowser
-
Hallo zusammen, ich habe ein Problem mit dem neuen RAD 2009 und dem TCppWebBrowser.
Leider wird bei mir der Webseitentitel nicht richtig angezeigt bzw.Das ProgressChange Ereignis macht auch was es will.
Hat einer den RAD 2009 und könnte mal das austesten was im Screenshot ist
ob es sich auch bei euch so "komisch" verhält ?
-
Da muß es irgendein Problem in dem Event-Dispatcher geben.
Die TWebBrowser-Komponente funktioniert erwartungsgemäß.
-
Für dieses Problem habe ich hier mal einen QC-Report erstellt, und in einem Kommentar eines CodeGear-Mitarbeiters wird ein Workaround beschrieben:
Jean-Marie Babet schrieb:
This is a bug in the logic that computes the address of the event closures. It shows up only for bindings that use TControlData instead of TControlData2. You can update SHDocVw_OCX.cpp as follows to workaround:
1. Declare CControlData as a TControlData2 instead of plain TControlData.
2. Update the structure initialization to use version 401 instead of 300 as
in:TControlData2 TCppWebBrowser::CControlData =
{
// GUID of CoClass and Event Interface of Control
{0x8856F961, 0x340A, 0x11D0,{ 0xA9, 0x6B, 0x00,0xC0, 0x4F, 0xD7,0x05,
0xA2} }, // CoClass
{0x34A715A0, 0x6587, 0x11D0,{ 0x92, 0x4A, 0x00,0x20, 0xAF, 0xC7,0xAC,
0x4D} }, // Events// Count of Events and array of their DISPIDs
35, &EventDispIDs,// Pointer to Runtime License string
NULL, // HRESULT(0x80040111)// Flags for OnChanged PropertyNotification
0x00000000,
401,// (IDE Version)// Count of Font Prop and array of their DISPIDs
0, \1::PDispIDList(NULL),// Count of Pict Prop and array of their DISPIDs
0, \1::PDispIDList(NULL),
0, // Reserved
0, // Instance count (used internally)
0, // List of Enum descriptions (internal)
};3. Update TCppWebBrowser::InitControlData to initialize the FirstEventOfs
member as in:void __fastcall TCppWebBrowser::InitControlData()
{
ControlData = (TControlData*)&CControlData;
CControlData.FirstEventOfs = System::PByte(&FOnStatusTextChange) -
System::PByte(this);
};Please, let me know if the above does not help.
Cheers,
Bruneau
-
Dank dir Audacia,
habe das dementsprechend in der Datei
C:\Program Files\CodeGear\RAD Studio\6.0\source\Win32\ComServers\ie5\SHDocVw_OCX.cpp
geändert.Nun muss ja die Datei bcbie120.bpl neu erstellt werden damit der Code in Aktion kommt oder?
Haste einen Tip wo ich die Projektdatei dazu finde?
-
audacia schrieb:
Die TWebBrowser-Komponente funktioniert erwartungsgemäß.
Ach ich verwende einfach den TWebBrowser.
-
VergissEs schrieb:
Nun muss ja die Datei bcbie120.bpl neu erstellt werden damit der Code in Aktion kommt oder?
Du kannst den Server-Wrapper auch statisch linken und einfach die .cpp-Dateien deinem Projekt hinzufügen.
VergissEs schrieb:
Ach ich verwende einfach den TWebBrowser.
Das ist natürlich das einfachste
Der unkomplizierteste Workaround für diesen Bug wäre der Import der Typbibliothek für die Delphi-Personality, um dann vom Delphi-Compiler C++-Headerdateien generieren zu lassen.
-
Im Update 1 ist das Problem behoben.