在Delphi中使用IP控制元件 (轉)

gugu99發表於2008-03-20
在Delphi中使用IP控制元件 (轉)[@more@]

在中使用IP

西安交通大學
劉明華

----- 在中,我們常常碰到需要輸入的情況。然而Delphi並沒有為我們提供可以用於輸入IP串的控制元件,於是我們只好用Tedit控制元件(單行文字框)來接受使用者輸入的IP串。但是,使用Tedit來輸入IP串並不是一個好的主意,因為處理起來非常不方便。事實上,在我們的身旁有一個專門用來輸入IP串的控制元件,該控制元件如圖所示。IP控制元件會拒絕的IP串(在每個部分只能輸入0..255之間的數字);它讓你可以輕鬆地獲取控制元件中的IP串所對應的IP值(32位整數),這省去了IP串和IP值之間相互轉換的麻煩;此外,你還能限制IP控制元件中所能輸入的IP的範圍。在本文中,我將向大家介紹如何在我們的Delphi程式中使用Windows的IP控制元件。

---- Windows中有兩個非常重要的動態聯結庫:commctrl.dll和comctl32.dll,它們是Windows的自定義控制庫(Windows Common Controls)。自定義控制庫中包含了許多常用的Windows控制元件,如Statar,Coolbar,HotKey等;在Delphi中,這些控制元件大多數都已被包裝成視覺化控制元件了。在推出Inte Explorer 3之後,自定義控制庫中新增了一些控制元件,其中就包括Windows的IP控制元件(Address edit control)。

---- 初始化Windows自定義控制庫

---- Windows提供了兩個,InitCommonControls和InitCommonControlsEx,用來初始化自定義控制庫。從名字我們不難看出這兩個API函式的關係:後者是前者的增強。如果你希望在程式中使用IP控制元件,你必須用InitCommonControlsEx來完成對自定義控制庫以及類的初始化。函式InitCommonControlsEx的原型如下(Pascal語法):

---- ... ...

---- 建立IP控制元件

---- ... ...

---- 使用IP控制元件。 在程式中,我們透過向IP控制元件傳送訊息來與它通訊。IP控制元件可以響應的訊息有以下6個,這些訊息及它們的含義,見下表:

---- ... ...

---- 若想要獲取IP控制元件中IP串所對應的IP值,你應該向IP控制元件傳送IPM_GETADDRESS訊息,並且需要把一個32位整數的地址作為SendMessage的最後一個引數。

---- ... ...

---- IP控制元件的通知訊息

---- 當IP串被改動後或者輸入焦點發生了轉移,IP控制元件就會向它的父視窗傳送通知訊息IPN_FIELDCHANGED。在大多數情況下,我們都可以忽略此通知訊息。以下是處理通知訊息IPN_FIELDCHANGED的一個示例:

procedure Tform1.WndProc(var Msg: TMessage); var p:PNMHDR; begin inherited; if Msg.Msg=WM_NOTIFY then begin p:=Pointer(Msg.lParam); if p^.code=IPN_FIELDCHANGED then begin {… 處理IP控制元件的IPN_FIELDCHANGED通知訊息 …} end; end; end;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1001207/,如需轉載,請註明出處,否則將追究法律責任。

相關文章