全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:797
推到 Plurk!
推到 Facebook!

DELPHI控制項Tweblabel的編制

 
jackkcg
站務副站長


發表:891
回覆:1050
積分:848
註冊:2002-03-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-21 18:34:47 IP:61.64.xxx.xxx 未訂閱
DELPHI控制項Tweblabel的編制 2000-06-25 00:00:00· -·電子與電腦 http://www.yesky.com/20000625/85355.shtml -------------------------------------------------------------------------------- p> Internet已經越來越多地滲透到生活的各個方面以及各個領域,許多人都有了自己漂亮的主頁,但是,如何簡潔而快速地調用這些主頁呢?這就是用DELPHI的Tweblabel控制項方法。首先來看看這個控制項的威力。 上面這個Form表單中放了三個Tweblabel 控制項,你不用編寫一句程式,只是簡單地把它們拖放到Form 上,改一下網頁的地址,就可以運行了。當游標移動到文字上時,游標就會自動變成手形,用滑鼠輕輕地點擊一下,瀏覽器就會啓動,它將把你帶到你想去的地方。接下來將引導你一步一步地學習,使你不但要瞭解這個奇妙的Tweblabel控制項,而且要學會如何用DELPHI進行最奇妙的設計即控制項編程。 啓動DELPHI 3(或者DELPHI 4),功能表上有一個Component,用滑鼠單擊一下,選擇New Component就會彈出一個窗口。有幾樣東西需要填寫,先來解釋一下。 Ancestor type:表示被繼承的物件,是個下拉清單,選TLabel。 Class Name:表示新創建的類的名字,取名爲Tweblabel。 Palette Page:表示把Tweblabel放到控制項面板上的哪個欄位上,選缺省Sample,也可以選別的,或者乾脆取個新欄位名字。 Unit file name:選缺省。 Search path:選缺省。 然後按“Create Unit”按鈕。 DELPHI爲我們創建了這個單元,並建起了骨架。下面就是用DELPHI編寫的代碼。 unit weblabel; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls; type Tweblabel = class(TLabel) private { Private declarations } protected { Protected declarations } public { Public declarations } published { Published declarations } end; procedure Register; implementation procedure Register; begin RegisterComponents(Samples, [Tweblabel]); end; end. DELPHI的Unit分爲兩個部分,一個是interface(介面),另一個是implementation(實現)。並且類的定義分private、protected、public、published幾個,前面三個是類固有的,published則是控制項特有的? 中的變數可以顯示在DELPHI的控制項編輯器裏。 有了DELPHI編寫的控制項的骨架之後,又該如何添加代碼呢?我們需要做以下幾件事情: 1.需要一個變數存放Internet主頁的位址; 2.需要一個函數來完成調用瀏覽器訪問Internet主頁; 3.需要初始化這個Tweblabel,比如字體、顔色、風格使它更像一個鏈結; 4.當滑鼠在Tweblabel上單擊時,瀏覽器就會被啓動。 具體作法如下: 1.定義變數 private { Private declarations } //定義一個變數存放HTTP主頁的位址 Fhttpaddr:string; //爲了使控制項編輯器能夠修改它,則加入: published { Published declarations } property CHttpaddr: string read Fhttpaddr write Fhttpaddr; //將變數輸出到控制項編輯器中,名稱應該爲HTTPADDR,前面加C是爲了方便, //它將直接排列在Caption的下面,方便修改。 2.調用瀏覽器訪問INTERNET主頁函數 function ShellExecute(hWnd: HWND; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): HINST; stdcall; 參數定義: hWnd: 父窗口控制碼 Operation: 操作模式 open 或 print FileName: 檔案名指標 Parameter: 傳遞給執行文件的參數 Directory: 缺省目錄 ShowCmd: 程式啓動後的狀態:(1)SW_SHOWNORMAL 正常 (2)SW_MINIMIZE 最小 (3)SW_MAXIMIZE 最大 不考慮錯誤判斷,打開一個WEB頁面的例子: ShellExecute(handle, open, http://www.microsfto.com, nil, nil, SW_SHOWNORMAL); 函數ShellExecute包含在單元ShellAPI中。爲了處理各種情況,我們定義了一個過程。 public procedure ExploreWeb(handle:HWND ; page:PChar); 具體代碼使用Robert Vivrette先生編寫的程式片段。 procedure Tweblabel.ExploreWeb(handle:HWND ; page:PChar); var Returnvalue : integer; //實際調用WEB頁面 begin ReturnValue := ShellExecute(handle, open, page, nil, nil, SW_SHOWNORMAL); if ReturnValue $#@60;= 32 then case Returnvalue of 0 : MessageBox(handle,錯誤:記憶體溢出!,WEB頁面出錯資訊,0); ERROR_FILE_NOT_FOUND: MessageBox(handle,錯誤:文件未找到!,WEB頁面出錯資訊,0); ERROR_PATH_NOT_FOUND: MessageBox(handle,錯誤:目錄錯誤!,WEB頁面出錯資訊,0); ERROR_BAD_FORMAT : MessageBox(handle,錯誤:EXE文件格式錯誤!,WEB頁面出錯資訊,0); // All other errors . See help for more ReturnValues of ShellExecute else MessageBox(handle,PChar(錯誤資訊[: IntToStr(Returnvalue) ]),WEB頁面出錯資訊,0) end end; 3.我們知道,必須重載Create函數才能加入我們的初始化代碼。 public { Public declarations } constructor Create(AOwner: TComponent); override; 實現部分: constructor Tweblabel.Create(AOwner: TComponent); begin //調用父輩的CREATE inherited Create(Aowner); //以下是自己的初始化代碼 //將游標設置爲手型 Cursor:= crHandPoint; //令標題=主頁地址 chttpaddr:=http://www.nbip.net/michaeljia; Caption:=chttpaddr; //字體缺省大小爲10 font.size:=10; font.color:=clblue; //字體缺省顔色爲蘭色 font.style:=[fsUnderline]; //字體缺省風格爲下劃線 end; 4.要想通過單擊Tweblabel來啓動瀏覽器,必須重載CLICK函數,代碼如下。 protected { Protected declarations } procedure click; override; 實現部分: procedure Tweblabel.click; begin inherited Click; //調用父輩的Click函數 ExploreWeb(parent.handle,pchar(chttpaddr)); //調用WEB頁面 end; ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起
------
**********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好

Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind
系統時間:2024-06-02 10:45:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!