關於delphi7 ActiveX的創建






步驟:


1、先創建ActiveX工程文件;


 2、註冊ActiveX文件(ocx文件) ;


3、編寫相應調用ActiveX文件(.ocx文件)的html文件.


具體操作流程如下:


步驟1:


a、選擇File->New->Other ,ActiveX頁面,選擇ActiveX Form ;


b、填寫New ActiveX Name:,其他的不用做變動(不好意思,我也不知道其他的什麼意思);


c、成功創建ActiveX Form,保存工程,三個文件 (AAImpl1.pas、AAProj1.dpr加入ActiveX Name爲AA);


d、AAProj1_TLB、AAProj1、AAImpl1;


e、增加接口(兩種方法):


1、選中AAImpl1單元,即選中ActiveX Form,在delphi的Edit菜單中選擇Add to Interface...;  


1> 在Add To Interface 窗口中加入接口Func:Function Func(x1,x2 :Integer) : Integer ; 


 2>最後OK就可以,delphi會自動幫你檢查語法,如果語法或者參數類型或者返回值類型不對,delphi開發環境會自動給出提示。  


3>注意:該接口函數有兩個參數 x1、x2,爲Integer型 ,返回值也爲Integer;  


4>參數和返回值類型說明:integer --long;String爲BStr或者WideString ;


2、選中AAImpl1單元,即選中ActiveX Form, 在delphi的View菜單中選擇Type Library;  


1> 在AAProj1.tlb 窗口中,在左側列表中選擇IAA,即選中IAA接口,右鍵->New->Method或者在在工具欄中選擇New Method   ,接着給方法命名test;  


2>選中test,在選擇窗口右邊的Parameters頁面,對該方法進行參數和返回值的進行增加,Return Type不需要改變;  


3>比如test的返回值爲String,有一個String型的參數,則在Parameters中增加兩個變量,具體如下   


   中文說明     Name       Type        Modifier     參數:      sVar       BSTR        [in]  //[in]表示輸入參數     返回值:    sRet       BSTR*       [out,retvar] //表示輸出結果,Type一定要爲指針類型,否則出錯,即一定要帶*


     則AAImpl1中產生:     function TAA.test(const sVar: WideString): WideString;     begin      //編寫函數體      result := sVar ; //此句爲自己編寫     end; 


 4>參數和返回值類型說明:integer --long;String爲BStr或者WideString ;


f、增加屬性Property:同樣選中AAImpl1單元,即選中ActiveX Form, 在delphi的View菜單中選擇Type Library;    在左側列表中選擇IAA,即選中IAA接口,右鍵->New->Property或者在在工具欄中選擇New Property  ,接着給屬性命名爲Mystr,    在Parameters中修改Type爲BSTR;  


 function TAA.Get_Mystr: WideString;  


 begin   //編寫函數體    


end;


  procedure TAA.Set_Mystr(Value: WideString); 


 begin  //編寫過程體 


 end; 


       以上爲搭建框架,接下來在ActiveX Form上增加一個TButton(btn_AX)和一個TEdit(edt_AX)控件


g、回到AAImpl1頁面代碼窗口中,  


 function TAA.Get_Mystr: WideString;//得到 Mystr  


 begin   //編寫函數體 


  Result := Self.edt_AX.Text ; 


  end;


  procedure TAA.Set_Mystr(Value: WideString);//設置Mystr  


begin  //編寫過程體 


 Self.edt_AX.Text := Value ;  


end;  


 procedure TAA.btn_AXClick(Sender: TObject); 


begin 


 Self.ClickEvent(Self);


 end; 


ActiveX Form 編輯完畢,Project->Builder All Projects. //編譯工程,生成AAProj1.Ocx文件。


步驟2:註冊ActiveX文件(ocx文件) 兩種方法註冊ActiveX文件:


1、在delphi開發環境中,Run-> Register ActiveX Server //註冊Ocx控件。


 2、開始->運行->regsvr32  "Ocx文件所在目錄\AAProj1.ocx".


步驟3:編寫相應調用ActiveX文件(.ocx文件)的html文件. 注:如果在delphi 7中可能會麻煩一點,至少我學習時是麻煩啦;方法:


1>Project->Web Deployment Options(Web部署選項)->Project ;


2>Target dir(Full path of the deployed OCX):選擇或填寫OCX的完整路徑目錄;   Target URL(Virtual path of the deployed OCX):填寫 ./;   HTML dir(Full path of the deployed HTML file):選擇或填寫HTML文件的完整路徑目錄;   其他選項默認。   注:如果Web Deployment Options爲不可用狀態,則在File->New->Other->ActiveX->ActiveX Form接着刪除掉這個ActiveX Form,此時Web Deployment Options爲可用狀態啦,他孃的,這種Bug 也有人能解決,真人才;


3>Project->Web Deploy ;


4>調試方法:Run->Parameters,在Local頁面中  Host Application :C:\Program Files\Internet Explorer\IEXPLORE.EXE //你的IE在哪裏就填寫那裏啦;  Parameters:文件路徑\AAProj1.htm 調試運行即可以;


至此結束;


以下內容爲ActiveX和網頁Html交互內容腳本:


<HTML> <H1> Delphi 7 ActiveX Test Page </H1><p> You should see your Delphi 7 forms or controls embedded in the form below. <HR><center><P>


<OBJECT


  id=TestActiveProj1   


classid="clsid:A215EF7E-1486-4C7A-8A5F-16C640D73C65"  


 codebase="./AAProj1.ocx#version=1,0,0,0"   


width=350  


 height=300  


 align=center   


hspace=0   


vspace=0 >


 </OBJECT>


<body>


  <head> <!--<title>無標題文檔</title> -->


<script language="javascript">


<!--


function onloadtime() {


document.myform.txtDate.value=AAProj1.Func(1,8) ;


document.all.AAProj1.Mystr = document.all["txtTest"].value ;


 }


function ontestclick() {


document.myform.txtDate.value=AAProj1.Func(52,8) ;


document.myform.txtTest.value = AAProj1.Mystr ;


}


</script>


<script language="javascript" for=AAProj1 event=onclick>   


  document.myform.txtTest.value = AAProj1.Mystr ;


</script>


 </head>


<body οnlοad="onloadtime()">


<form name=myform><div align="center">  


<input name="txtTest" type="text" value="" size="20">


 <input name="txtDate" type="text" value="" size="20"> 


<input name="btn" type="Button"  value="test" οnclick="onloadtime()" size="40">  


 <input name="btn1" type="Button"  value="Click" οnclick="ontestclick()"  size="40">


 </div>


 </form>


</body> </HTML>


 


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/cai5/archive/2008/06/13/2543761.aspx



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章