delphi實現web activex控制項

2021-04-23 06:51:59 字數 2419 閱讀 6759

目前在做乙個專案,開發乙個控制項供給web使用,第一次開發delphi activex,記錄開發過程。

1、新建乙個activex library工程。

2、接著新建乙個type library。

3、現在新建automation object,選中generate event support code(作為web事件排程)。

4、儲存工程,記住type library不能和class同名,否則類的classid出現class_***x_,多了乙個_。

5、在tlb觀察器中可以看到inte***ce的parent inte***ce是idispatch,同時還有乙個inte***ceevents事件介面。

6、再增加乙個介面inte***ce2和乙個類coclass2。

7、系統會自動幫你將第乙個類宣告和實現完成,手動加的介面和類必須自己實現。

tclass1 = class(tautoobject, iconnectionpointcontainer, iobjectsafety,inte***ce1)

private

fconnectionpoints: tconnectionpoints;

fconnectionpoint: tconnectionpoint;

fevents: idevicecontrolevents;

function getinte***cesafetyoptions(const iid: tiid; pdwsupportedoptions,

pdwenabledoptions: pdword): hresult; stdcall;

function setinte***cesafetyoptions(const iid: tiid; dwoptionsetmask,

dwenabledoptions: dword): hresult; stdcall;

fhandler: olevariant;

...public

procedure notify(status: integer);

public

constructor create;

destructor destroy; override;

end;

tclass2 = class(tautoobject, inte***ce2)

...public

constructor create;

destructor destroy; override;

end;

implementation

procedure tclass1.notify(status: integer);

begin

fhandler.onnotify1(status); //在web中定義相應的函式名!!!

end;

constructor tclass1.create;

begin

inherited; //注意要繼承基類的,不繼承的話,web呼叫將失敗!!!

...;

end;

destructor tclass1.destroy;

begin

...;

inherited;

end;

function tclass1.getinte***cesafetyoptions(const iid: tiid;

pdwsupportedoptions, pdwenabledoptions: pdword): hresult;

begin

pdwsupportedoptions :=

inte***cesafe_for_untrusted_caller shr inte***cesafe_for_untrusted_data;

result := s_ok;

end;

function tclass1.setinte***cesafetyoptions(const iid: tiid;

dwoptionsetmask, dwenabledoptions: dword): hresult;

begin

result := s_ok;

end;

在上面tclass1中,fhandler是乙個olevariant型別,它是作為web事件通告使用。繼承iobjectsafety是為了讓web不彈出警告。同時還要將兩個類註冊:

initialization

tautoobjectfactory.create(comserver, tclass1, class_class1,

cimultiinstance, tmapartment);

tautoobjectfactory.create(comserver, tclass2, class_class2,

cimultiinstance, tmapartment);

否則當web呼叫的時候將出錯。

加密和解密 delphi實現

加密流程 先把每個字元與自己在字串中的位置異或運算,然後再與金鑰進行異或運算 然後把金鑰加在最後,最後把所得的結果進行base64編碼 解密時反之 先解碼,再解密。function tfrmclassroom.cryptstr const s string stype allint string v...

簡單工廠之Delphi實現

工廠模式中又分為簡單工廠模式 工廠方法模式和抽象工廠模式 這裡給大家介紹的簡單工廠模式是其中最簡單的一種。學習設計模式要對物件導向的程式設計有一定的理解,特別是多型性 如果能看懂下面的例子就沒問題了,呵呵 在例程中我用到了介面 不明白得可以把它當成乙個比抽象類還抽象的抽象類,說白了把它當成乙個類就沒...

delphi 實現拖拽開啟檔案

步驟如下,delphi 7測試通過 1 在uses 中增加 shellapi 2 增加拖拽的訊息處理函式 宣告 protected procedure wmdropfiles var msg tmessage message wm dropfiles 實現 procedure tform1.wmdr...