目前在做乙個專案,開發乙個控制項供給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...