----- En los programas de red, a menudo nos encontramos con situaciones en las que los usuarios deben ingresar direcciones IP. Sin embargo, Delphi no nos proporciona un control que pueda usarse para ingresar la cadena IP, por lo que tenemos que usar el control Tedit (cuadro de texto de una sola línea) para aceptar la cadena IP ingresada por el usuario. Sin embargo, usar Tedit para ingresar la cadena IP no es una buena idea porque es muy incómodo de manejar. De hecho, hay un control de Windows a nuestro lado específicamente para ingresar cadenas de IP, como se muestra en la figura. El control de IP rechazará cadenas de IP ilegales (solo se pueden ingresar números entre 0 y 255 en cada parte, lo que le permite obtener fácilmente el valor de IP (entero de 32 bits) correspondiente a la cadena de IP en el control. le ahorra la molestia de convertir entre cadenas de IP y valores de IP; además, también puede limitar el rango de IP que se pueden ingresar en el control de IP; En este artículo, le presentaré cómo utilizar los controles de IP de Windows en nuestros programas Delphi.
---- Hay dos bibliotecas de enlaces dinámicos muy importantes en Windows: commctrl.dll y comctl32.dll, que son bibliotecas de controles personalizados de Windows (Controles comunes de Windows). La biblioteca de controles personalizados contiene muchos controles de Windows de uso común, como Statusbar, Coolbar, HotKey, etc. en Delphi, la mayoría de estos controles se han empaquetado como controles visuales. Después de que Microsoft lanzó Internet Explorer 3, se agregaron algunos controles nuevos a la biblioteca de controles personalizados, incluido el control IP de Windows (control de edición de dirección IP).
---- Inicializar la biblioteca de controles personalizados de Windows
---- Windows proporciona dos funciones API, InitCommonControls e InitCommonControlsEx, para inicializar bibliotecas de controles personalizados. Por los nombres, no es difícil ver la relación entre estas dos funciones API: la última es una mejora de la primera. Si desea utilizar controles de IP en su programa, debe utilizar InitCommonControlsEx para completar la inicialización de bibliotecas y clases de controles personalizados. El prototipo de la función InitCommonControlsEx es el siguiente (sintaxis Pascal):
----...
---- Crear control de IP
----...
---- Utilice el control de IP. En el programa, nos comunicamos con el control de IP enviándole mensajes. El control de IP puede responder a los siguientes seis mensajes. Estos mensajes y sus significados se muestran en la siguiente tabla:
----...
---- Si desea obtener el valor de IP correspondiente a la cadena de IP en el control de IP, debe enviar el mensaje IPM_GETADDRESS al control de IP y debe usar una dirección entera de 32 bits como último parámetro de SendMessage. .
----...
---- Mensaje de notificación de control de IP
---- Cuando se cambia la cadena de IP o se transfiere el foco de entrada, el control de IP enviará el mensaje de notificación IPN_FIELDCHANGED a su ventana principal. En la mayoría de los casos, podemos ignorar este mensaje de notificación. El siguiente es un ejemplo de manejo del mensaje de notificación IPN_FIELDCHANGED:
Procedimiento Tform1.WndProc(var Msg: TMessage);var p:PNMHDR;begininherited; si Msg.Msg=WM_NOTIFYentonces comience p:=Pointer(Msg.lParam); si p^.code=IPN_FIELDCHANGED entonces comience{...procesamiento de IP controla el mensaje de notificación IPN_FIELDCHANGED...} end;end;end;