APP资源网_中文资源在线官网_А天堂中文官网_中文在线APP资源下载网

如何为Delphi/C++Builder增添IP控件

如何为Delphi/C++Builder增添IP控件

人气:1引自:中文资源APP下载网

如何为Delphi/C++Builder增添IP控件:

            在进行网络设置时,我们常常碰到需要填写IP地址的情况,为此Windows引入了一个专门用来接受IP地址输入的控件(如图所示)。Windows IP地址编辑控件(IP Address edit control)是随着微软的Internet Explorer 4.0的推出而引入Windows操作系统的(Windows 98 和Windows 2000中都已经包含了此控件)。但是令人遗憾的是在Inprise公司最新版本的 Delphi 5和C++ Builder 5中,Borland可视化控件库(Visual Component Library)中居然没有提供IP地址编辑控件。

----为了让Delphi和C++ Builder开发人员更方便地使用IP 控件,本文介绍如何将它包装成一个可以在Delphi和C++ Builder的IDE环境中使用的可视化Delphi控件。同时本文也为读者学习Delphi控件编写提供了一个比较好的示例;它涉及了Delphi控件编写的以下方面的知识:将Windows窗口类封装成Delphi控件,将 Windows消息映射成事件属性,多个属性共享read和write方法,以及属性编辑器(Property Editor)的构造。

\  

一、IP控件的属性、方法及事件

----本文将为Delphi/C++ Builder的IP控件实现下面的属性、方法和事件。它们的简单介绍如下:

----IP属性:IP控件中的IP地址值(32位整数LongWord)。为了获取IP控件的IP值,我们只需要读取此属性即可;通过对IP属性赋值,我们就能够改变IP控件的内容。

----Field0..Field3属性:Field0到Field3分别为IP控件的4个部分的值。这四个属性也是为了读取和改变IP控件的IP值而设置的。

----Field0Range..Field3Range 属性:Field0Range到 Field3Range限制IP控件各部分的取值的范围。

----Blank属性:判断IP控件的IP串是否为空,此属性为只读属性。

----About属性:在Object Inspector中点击它可以显示控件的版本信息,添加此属性是为了提供一个编写属性编辑器的简单例子。

----以下属性继承自TWinControl类:Font、TabOrder、 TabStop、 ParentShowHint、ShowHint、Hint及Visible。

----TIPEdit的事件属性有:OnFieldChange、OnChange、 OnEnter以及OnExit。

----Clear方法:清空IP控件中的IP串。

----SetFieldFocus方法:设置IP控件的输入焦点。

二、IP控件的实现 //文件名:IPEdit.PAS{~~~~~~~~~~~~~~~~~~~~~~~}// IP address edit control for Borland Delphi 5// Implemented by Simon Liu ([email protected]){~~~~~~~~~~~~~~~~~~~~~~~}unit IPEdit;interfaceuses Windows, Messages, SysUtils, Classes,Forms, Controls, ComCtrls, CommCtrl, DsgnIntf;typeTFieldRange = recordLowRange: Byte;HighRange: Byte;end;TFieldChangeEvent = procedure(Sender: TObject; OldField, Value: Byte) of Object;//定义TAboutProperty属性编辑器TAboutProperty = class(TPropertyEditor)publicprocedure Edit; override;function GetAttributes: TPropertyAttributes;override;function GetValue: string; override;end;TIPEdit = class(TWinControl)privatefAbout:TAboutProperty;FIP: LongWord;FFields:array[0..3] of Byte;FFieldRanges: array [0..3] of TFieldRange;FCreating: Boolean;FOnChange: TNotifyEvent;FOnEnter: TNotifyEvent;FOnExit: TNotifyEvent;FOnFieldChange: TFieldChangeEvent;procedure SetIP(Value: LongWord);function GetIP: LongWord;function GetField(Index:Integer):Byte;procedure SetField(Index:Integer; B:Byte);function GetFieldRange(Field: Integer): TFieldRange;procedure SetFieldRange(Field:integer; Value: TFieldRange);procedure SetIPAddress;function GetBlank: Boolean;procedure WMNotifyFormat(var Message: TMessage);message WM_NOTIFYFORMAT;//处理IP控件的通知消息IPN_FIELDCHANGEDprocedure CNNotify(var Message: TWMNotify);message CN_NOTIFY;procedure CNCommand(var Message: TWMCommand);message CN_COMMAND;procedure WMSetFont(var Message: TWMSetFont);message WM_SETFONT;protectedprocedure CreateParams(var Params: TCreateParams); override;procedure CreateWnd; override;procedure DestroyWnd; override;publicconstructor Create(AOwner: TComponent); override;destructor Destroy; override;//清除IP控件中的IP串procedure Clear;//设置IP控件的输入焦点(field的有效取值为0..3)procedure SetFieldFocus(Field:Byte);published//判断IP控件的IP串是否为空property Blank: Boolean read GetBlank;//Field0到Field3分别为IP控件的4个部分的值property Field0: Byte index 0 read GetField write SetField;property Field1: Byte index 1 read GetField write SetField;property Field2: Byte index 2 read GetField write SetField;<

专题文集:编程开发 IP控件
引用标题:《如何为Delphi/C++Builder增添IP控件》
来源地址:https://www.xjanfang.cn/news/tpart-46157.html