`
yesjavame
  • 浏览: 689486 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

在Delphi中使用IP控件

阅读更多

在Delphi中使用IP控件

西安交通大学
刘明华

----- 在网络程序中,我们常常碰到需要用户输入IP地址的情况。然而Delphi并没有为我们提供可以用于输入IP串的控件,于是我们只好用Tedit控件(单行文本框)来接受用户输入的IP串。但是,使用Tedit来输入IP串并不是一个好的主意,因为处理起来非常不方便。事实上,在我们的身旁有一个专门用来输入IP串的Windows控件,该控件如图所示。IP控件会拒绝非法的IP串(在每个部分只能输入0..255之间的数字);它让你可以轻松地获取控件中的IP串所对应的IP值(32位整数),这省去了IP串和IP值之间相互转换的麻烦;此外,你还能限制IP控件中所能输入的IP的范围。在本文中,我将向大家介绍如何在我们的Delphi程序中使用Windows的IP控件。

---- Windows中有两个非常重要的动态联结库:commctrl.dll和comctl32.dll,它们是Windows的自定义控制库(Windows Common Controls)。自定义控制库中包含了许多常用的Windows控件,如Statusbar,Coolbar,HotKey等;在Delphi中,这些控件大多数都已被包装成可视化控件了。在Microsoft推出Internet Explorer 3之后,自定义控制库中新增了一些控件,其中就包括Windows的IP控件(IP Address edit control)。

---- 初始化Windows自定义控制库

---- Windows提供了两个API函数,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;
分享到:
评论

相关推荐

    Delphi 写的 IP控件

    开发者可以引用这个文件在他们的项目中使用IP控件。 3. `PkgIPEdit.dof`:可能包含了Delphi项目的选项和格式信息,例如代码风格、调试设置等。 4. `PkgIPEdit.dpk`:Delphi的包文件,用于打包和发布组件,使得其他...

    delphi 的IP输入控件

    在Delphi编程环境中,开发一个具有IP输入功能的控件是一项常见的需求,特别是在涉及网络通信或者网络配置的应用中。标题中的“delphi 的IP输入控件”指的是专门为Delphi设计的一种用户界面元素,用于帮助用户按照...

    delphi 中使用TWebBrowser控件

    例如,在HTML中,我们可以使用标签来定义变量,然后在Delphi程序中使用OleObject.Document.script来访问该变量。例如: htm中: <script> var currID=123 Delphi中: id := Form1.WebBrowser1.OleObject.Document....

    ICS网络控件,Delphi 使用

    本文将详细探讨如何在Delphi中使用ICS网络控件,以及它对UDP通信的支持。 首先,ICS网络控件是由JEDI(Java and Delphi Expert Developer's Group)开发的一套开源网络组件库,它为Delphi提供了全面的网络编程支持...

    modbus Delphi7 控件

    在Delphi7中,开发者可以使用控件来简化UI设计和功能实现。对于Modbus通信,这样的控件通常提供以下功能: 1. **连接管理**:控件会包含建立和断开与Modbus设备连接的功能,可能包括TCP/IP、RTU(远程终端单元)或...

    Delphi中使用IDSNTP控件实现NTP客户端校时功能Demo

    在已知时间服务器IP的情况下,想在我的软件里嵌入一个NTP客户端校时功能,折腾了好一阵之后发现delphi7的indy控件包里有一个IDSNTP控件其实就能实现我想要的校时功能,在网上查找该控件的用法少之又少,indyDemo里也...

    Delphi TCP/IP通信

    在Delphi中,通过使用内置的Internet组件,如ServerSocket和ClientSocket,开发者可以轻松实现TCP/IP通信。 ServerSocket组件代表服务器端,用于监听来自客户端的连接请求。它主要设置以下属性: 1. **Host**:...

    delphi-modbus-tcp三方控件,支持Delphi11

    3. **Delphi编程**:熟悉Delphi的VCL框架、对象导向编程以及如何在Delphi项目中引入和使用第三方控件。 4. **控件使用**:学习如何在Delphi IDE中添加控件,配置属性,调用方法,以及响应事件,以便与Modbus设备...

    Delphi制作OCX通信控件(Socket通信)

    "有设置OCX控件的网页代码"表明这个控件不仅可以在桌面应用程序中使用,还可以嵌入到网页中,通过ActiveX技术在Internet Explorer这样的浏览器环境下运行。这通常需要HTML、JavaScript等Web技术配合,使得网页可以...

    delphi6-7 控件 JSocket

    在Delphi的世界里,网络编程是不可或缺的一部分,而JSocket就是这样一个用于实现网络通信的组件,尤其在Delphi 6和7版本中,它扮演了重要的角色。 JSocket,全称Java Socket的Delphi版本,是由Java的Socket类移植到...

    delphi 自带的UPD控件通讯

    标题 "Delphi 自带的 UDP 控件通讯" 涉及到的是 Delphi 开发环境中使用内置的 UDP(用户数据报协议)控件进行网络通信的技术。UDP 是一种无连接的传输层协议,常用于实时数据传输,如音频、视频流,因为它提供了快速...

    IP地址输入控件

    在DELPHI中,自定义控件的创建和使用是提升用户体验和增强功能的有效手段。 标题所提及的“IP地址输入控件”是一种特殊的文本输入框,它专门设计用来接收和验证IPv4或IPv6地址。在互联网通信中,IP地址是网络中每台...

    delphi 与西门子通讯控件

    在实际操作中,首先要在Delphi项目中导入这个通讯控件,然后设置其属性,如IP地址、波特率、奇偶校验等,以确保与PLC正确连接。接着,你可以使用控件提供的API来读取或写入PLC的输入/输出地址,实现对PLC内部寄存器...

    c++builder2007中ip地址控件

    c++builder2007中ip地址控件(注:非原创,原本是Delphi的东西,我自己正在使用;若是你下载后不能正常使用,请来函:PengmingCN@msn.com)

    自定义IP地址输入控件以及devExpress的IP输入控件

    1、自定义IP地址输入框控件,将IP用“.”分隔。满三位焦点自动移动到下一字段,可按...2、另一个是devEXpress的IP控件,如果打开后提示缺少dll,可重新引用DevExpress文件夹下面的dll 3、使用正则表达式判断IP的合法性

    delphi MODBUS控件

    Delphi MODBUS控件是一种专为在Delphi集成开发环境中使用的组件,用于实现MODBUS通信协议,以便于与各种支持MODBUS协议的PLC(可编程逻辑控制器)进行交互。MODBUS是一种广泛应用的工业通信协议,它允许不同设备之间...

    delphi NMUDP控件

    6. **兼容性**:标题中提到这个控件能在Delphi 2007上运行,这意味着它具有良好的向下兼容性,可以在较旧的Delphi版本中使用。 接下来,我们看看压缩包中的文件可能包含的内容: - **bin**:这个文件夹通常包含...

    delphi服务器搜寻客户端控件(支持xe3)

    在Delphi中使用这样的控件,开发者通常需要了解以下知识点: 1. **UDP协议基础**:理解UDP的工作原理,包括其无连接、不可靠和基于数据报的特性。 2. **套接字编程**:在Delphi中,使用 Indy 或 Synapse 这样的第...

    delphi下使用正则表达式控件集

    本篇文章将详细探讨在Delphi下使用正则表达式的控件集,以及如何利用它们来增强你的应用程序功能。 标题提及的“delphi下使用正则表达式控件集”主要包括两个组件包:RegExpr和DEELX。这两个组件库为Delphi开发者...

    Delphi使用TIdFtp控件实现FTP协议.doc

    本文将详细介绍如何在 Delphi 中利用 TIdFtp 控件实现基于 FTP 的文件传输。 #### 二、TIdFtp 控件简介 TIdFtp 是 Indy 组件包中的一个强大控件,主要用于实现 FTP 协议的客户端功能。它使得开发者能够轻松地在 ...

Global site tag (gtag.js) - Google Analytics