Код создания такой:
[syntax='Delphi']
constructor TOleControl.Create(AOwner: TComponent);
var
I: Integer;
begin
inherited Create(AOwner);
Include(FComponentStyle, csCheckPropAvail);
InitControlData;
Inc(FControlData^.InstanceCount);
{Тут кусок всякого неинтересного про картинки и шрифты}
FEventDispatch := TEventDispatch.Create(Self);
CreateInstance;
InitControlInterface(FOleObject);
OleCheck(FOleObject.GetMiscStatus(DVASPECT_CONTENT, FMiscStatus));
if (FControlData^.Reserved and cdDeferSetClientSite) = 0 then
if ((FMiscStatus and OLEMISC_SETCLIENTSITEFIRST) <> 0) or
((FControlData^.Reserved and cdForceSetClientSite) <> 0) then
OleCheck(FOleObject.SetClientSite(Self));
OleCheck(FOleObject.QueryInterface(IPersistStreamInit, FPersistStream));
if FMiscStatus and OLEMISC_INVISIBLEATRUNTIME <> 0 then
Visible := False;
if FMiscStatus and OLEMISC_SIMPLEFRAME <> 0 then
ControlStyle := [csAcceptsControls, csDoubleClicks, csNoStdEvents] else
ControlStyle := [csDoubleClicks, csNoStdEvents];
TabStop := FMiscStatus and (OLEMISC_ACTSLIKELABEL or
OLEMISC_NOUIACTIVATE) = 0;
OleCheck(RequestNewObjectLayout);
end;
[/syntax]
Как-то ничего кидающегося в глаза на тему того, что оно относится к COM, нету.
Я еще попробовал следующий фокус:
Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
const tgd: TGUID='{D30C1661-CDAF-11D0-8A3E-00C04FC9E26E}';
//это тгуид интерфейса IWebBrowser2
begin
{...}
WebBrowser2.PutProperty('ComObject',CreateComObject(tgd));
end;
- роняется с эксепшеном "Класс не зарегистрирован". Хотя вроде бы WebBrowser2 - стандартнейший TWebBrowser.
Не подскажете, куда дальше рыть?