DELPHI控制項Tweblabel的編制 |
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |