Colección de citas famosas - Slogan de motivación - ¿Por qué Delphi xe2 no tiene barra de herramientas ActiveX?

¿Por qué Delphi xe2 no tiene barra de herramientas ActiveX?

En primer lugar, debe comprender: Los principios básicos de COM. El control ActiveX no visual que puede ser llamado por la página web debe ser un componente TAutoObject que implemente al menos la interfaz IOleObject. El control ActiveX generado mediante el asistente de Delphi debe heredar de WinControl, por lo que no puede utilizar el asistente de Delphi para generar controles ActiveX no visuales.

El siguiente ejemplo implementa una llamada al exeWB de este control. Es equivalente a llamar a la función de impresión, vista previa, configuración de página, etc. de IE. Sobre esta base también se pueden ampliar otras funciones.

Pasos de producción: 1. Abra Delphi y cree un nuevo paquete ActiveX. ? Archivo|nuevo|otro...|ActiveX|Biblioteca AxtiveX 2. Utilice el asistente de Delphi para agregar un objeto de automatización.

? Archivo|nuevo|otro...|ActiveX|Objeto de automatización ? Mi proyecto se llama WebPrint 3. ¿Defina las funciones de interfaz que necesita en la ventana de edición de TLB que aparece a continuación? ¿Agrego las interfaces requeridas IWebPrint.print(), IWebPrint? .preview(), etc. 4. ¿Implementar la interfaz IOleObject y cambiar el código al siguiente formulario? ¿Agregar Windows a la referencia de usos? ¿ComObj, ActiveX, Project1_TLB, Windows? (TAutoObject,IWebPrint) ? Para? TWebPrint = class(TAutoObject,IOleObject, IWebPrint) Agregue el siguiente código a la sección privada de TWebPrint private FOleClientSite: IOleClientSite;

?Agregue el siguiente código a la sección pública de TWebPrint public

{IOleObject}

función SetClientSite(const clientSite: IOleClientSite): HResult;stdcall;

función GetClientSite(out clientSite: IOleClientSite): HResult; stdcall;

función SetHostNames(szContainerApp: POleStr;szContainerObj: POleStr): HResult; stdcall;

función Close(dwSaveOption: Longint): HResult;

función SetMoniker(dwWhichMoniker: Longint; const mk: IMoniker): HResult; stdcall;

función GetMoniker(dwAssign: Longint; dwWhichMoniker: Longint;out mk: IMoniker): HResult;

función InitFromData(const dataObject: IDataObject; fCreation: BOOL;dwReserved: Longint): HResult; stdcall;

función GetClipboardData(dwReserved: Longint;out dataObject: IDataObject): HResult;

función DoVerb(iVerb: Longint; msg: PMsg; const activeSite: IOleClientSite;lindex: Longint; hwndParent: HWND; const posRect: TRect): HResult;stdcall;

función EnumVerbs(out) enumOleVerb: IEnumOleVerb): HResult;

Actualización de función: HResult;

<

p>función IsUpToDate: HResult; stdcall;

función GetUserClassID(out clsid: TCLSID): HResult; stdcall;

función GetUserType(dwFormOfType: Longint; out pszUserType: POleStr): HResult ;stdcall;

función SetExtent(dwDrawAspect: Longint; tamaño const: TPoint): HResult;stdcall;

función GetExtent(dwDrawAspect: Longint; tamaño de salida: TPoint): HResult;stdcall ;

función Advise(const advSink: IAdviseSink; out dwConnection: Longint): HResult; stdcall;

función Unadvise(dwConnection: Longint): HResult;

función EnumAdvise(fuera enumAdvise: IEnumStatData): HResult; stdcall;

función GetMiscStatus(dwAspect: Longint; fuera dwStatus: Longint): HResult;stdcall;

función SetColorScheme(const logpal: TLogPalette): HResult; stdcall;

//Implemente la función de IOleObject en la sección de implementación implementación{IOleObject}función TWebPrint.SetClientSite(const ClientSite: IOleClientSite): HResult

<; p> comenzar

si ClientSite <> nil entonces

comenzar

si FOleClientSite <> nil entonces

comenzar

Resultado := E_FAIL;

Salir;

fin;

FOleClientSite := ClientSite;

fin

else

comenzar

FOleClientSite := nil;

finalizar;

Resultado := S_OK;

fin ;función TWebPrint.GetClientSite(fuera clientSite: IOleClientSite): HResult;

comenzar

ClientSite := FOleClientSite;

Resultado := S_OK

fin;función TWebPrint.SetHostNames(szContainerApp: POleStr; ? szContainerObj: POleStr): HResult;

comenzar

Resultado:

= S_OK;

fin; función TWebPrint.Close(dwSaveOption: Longint): HResult

comenzar

Resultado:= E_NOTIMPL; >fin;función TWebPrint.SetMoniker(dwWhichMoniker: Longint; const mk: IMoniker): HResult

comenzar

Resultado:= E_NOTIMPL

fin; TWebPrint.GetMoniker(dwAssign: Longint; dwWhichMoniker: Longint; ? out mk: IMoniker): HResult

comenzar

Resultado:= E_NOTIMPL

fin; función TWebPrint.InitFromData(const dataObject: IDataObject; fCreation: BOOL; ? dwReserved: Longint): HResult

comenzar

Resultado:= E_NOTIMPL

fin; ;función TWebPrint.GetClipboardData(dwReserved: Longint; ? out dataObject: IDataObject): HResult

comenzar

Resultado:= E_NOTIMPL

fin;función TWebPrint; .DoVerb(iVerb: Longint; msg: PMsg; const activeSite: IOleClientSite; ? lindex: Longint; hwndParent: HWND; const posRect: TRect): HResult

begin

Resultado: = E_NOTIMPL;

fin; función TWebPrint.EnumVerbs(fuera enumOleVerb: IEnumOleVerb): HResult

comenzar

Resultado:= OleRegEnumVerbs(Factory.ClassID, enumOleVerb );

fin;función TWebPrint.Update: HResult;

comenzar

Resultado:= S_OK

fin;función TWebPrint. IsUpToDate: HResult;

comenzar

Resultado:= S_OK;

fin; función TWebPrint.GetUserClassID(out clsid: TCLSID): HResult

comenzar

clsid := Factory.ClassID;

Resultado := S_OK;

fin; función TWebPrint.GetUserType(dwFormOfType: Longint; out pszUserType : POleStr): HResultado

>comenzar

Resultado:= OleRegGetUserType(Factory.ClassID, dwFormOfType, pszUserType);

fin;función TWebPrint.SetExtent(dwDrawAspect: Longint; tamaño constante: TPoint): HResult <; /p>

comenzar

Resultado:= E_NOTIMPL;

fin;función TWebPrint.GetExtent(dwDrawAspect: Longint; tamaño de salida: TPoint): HResult

<; p>comenzar

Resultado:= E_NOTIMPL;

end;función TWebPrint.Advise(const advSink: IAdviseSink; out dwConnection: Longint): HResult

comenzar;

Resultado:= E_NOTIMPL;

fin;función TWebPrint.Unadvise(dwConnection: Longint): HResult

comenzar

Resultado: = E_NOTIMPL;

fin; función TWebPrint.EnumAdvise(out enumAdvise: IEnumStatData): HResult

comenzar

Resultado:= E_NOTIMPL

end;función TWebPrint.GetMiscStatus(dwAspect: Longint; out dwStatus: Longint): HResult;

comenzar

Resultado:= E_NOTIMPL

fin; function TWebPrint.SetColorScheme(const logpal: TLogPalette): HResult;

begin

Resultado:= E_NOTIMPL

end; {ITWebPrint}procedimiento TWebPrint.exeWB(cmdID:TOleEnum);

var

spDoc:IHTMLDocument2;

spContainer:IOleContainer;

spIE:IWebBrowser2;

comenzar

FOleClientSite.GetContainer(spContainer);

si no está asignado (spContainer), entonces

comenzar

messagebox(0,'Este objeto debe usarse como un objeto OLE','Uso incorrecto',0);

salir;

end ?if spContainer; .QueryInterface(IID_IHTMLDocument2,spDoc)=S_OK entonces

comenzar

si (spDoc.parentWindow como IServiceprovider).QueryService(IWebbrowse

rApp, IWebBrowser2, spIE)=S_OK entonces

comenzar

si spIE.QueryStatusWB(cmdID)=3 entonces

spIE.ExecWB(cmdID, OLECMDEXECOPT_DODEFAULT,EmptyParam ,EmptyParam);

end

else

begin

messagebox(0,'Utilice IE5.5 o superior',' El entorno operativo es incorrecto',0);

exit;

end;

end

else

comenzar

messagebox(0,'Contenido de la página web no encontrado','Error de uso',0);

salir;

Enlace a la página web