J'ai un problème avec un contrôle Delphi ActiveX. Je crée une bibliothèque ActiveX, puis un formulaire ActiveX. Je définis une fonction et je veux appeler cette fonction de JavaScript. Mais je ne peux pas. JavaScript génère une erreur: "L'objet ne prend pas en charge la propriété ou la méthode" Method1 "".Impossible d'appeler la méthode Delphi ActiveX à partir de JavaScript
Voici le code HTML:
<OBJECT id="GetDocsActiveX" classid="clsid:A03962E6-6030-46C0-988D-ADE26BC4BACD" codebase="GetDocs.ocx#version=1.0">
<PARAM NAME="Color" VALUE="13417386">
</OBJECT>
Ceci est le code Delphi * .ridl fichier
interface IGetDocs: IDispatch
{
[id(0x000000E8)]
HRESULT _stdcall Method1(void);
};
c'est * fichier _TLB.pas
IGetDocs = interface(IDispatch)
['{8F2BF1C6-98A5-4D6B-A43E-890698A3C91D}']
procedure Method1; safecall;
end;
et c'est fichier avec implémentation
unit GetDocsU;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ActiveX, AxCtrls, GetDocs_TLB, StdVcl, Vcl.StdCtrls, ShellApi, Vcl.XPMan,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;
type
TGetDocs = class(TActiveForm, IGetDocs)
protected
procedure Method1; safecall;
public
{ Public declarations }
procedure Initialize; override;
end;
implementation
uses ComObj, ComServ;
{$R *.DFM}
procedure TGetDocs.Method1;
begin
MessageDlg('HI from active x', mtInformation, [mbOK], 0, mbOK);
end;
end.
Quelqu'un peut-il aider avec ce problème. J'essaie de déplacer la méthode dans la section publique de la section publiée sans succès.
EDIT ici est script java
<script type="text/javascript">
try {
var obj = $("#GetDocsActiveX");
if (obj) {
obj.Method1();
} else {
alert("Object is not created!");
}
} catch (ex) {
alert("Some error happens, error message is: " + ex.message);
}
</script>
Avez-vous vérifié que vous pouvez activer l'objet ActiveX à partir d'une application Delphi autonome en utilisant 'GetOleObject' ou' GetComObject'? Au fait, les lecteurs ne peuvent pas dire d'après ce que vous avez posté si votre script utilise le bon identifiant. – MartynA
J'enregistre Activex avec regsvr32 et obtiens la même erreur. – plamen