----- Em programas de rede, frequentemente encontramos situações em que os usuários são obrigados a inserir endereços IP. No entanto, o Delphi não nos fornece um controle que possa ser usado para inserir a string IP, então temos que usar o controle Tedit (caixa de texto de linha única) para aceitar a string IP inserida pelo usuário. No entanto, usar o Tedit para inserir a string IP não é uma boa ideia porque é muito inconveniente de manusear. Na verdade, existe um controle do Windows ao nosso lado especificamente para inserir strings de IP, conforme mostrado na figura. O controle IP rejeitará strings IP ilegais (apenas números entre 0..255 podem ser inseridos em cada parte); permite obter facilmente o valor IP (inteiro de 32 bits) correspondente à string IP no controle. evita o trabalho de conversão entre strings de IP e valores de IP; além disso, você também pode limitar o intervalo de IPs que podem ser inseridos no controle de IP; Neste artigo, apresentarei como usar os controles IP do Windows em nossos programas Delphi.
---- Existem duas bibliotecas de links dinâmicos muito importantes no Windows: commctrl.dll e comctl32.dll, que são bibliotecas de controle personalizadas do Windows (Windows Common Controls). A biblioteca de controles personalizados contém muitos controles comumente usados do Windows, como Statusbar, Coolbar, HotKey, etc. no Delphi, a maioria desses controles foram empacotados como controles visuais. Depois que a Microsoft lançou o Internet Explorer 3, alguns novos controles foram adicionados à biblioteca de controles personalizados, incluindo o controle IP do Windows (controle de edição de endereço IP).
---- Inicializar biblioteca de controle personalizado do Windows
---- O Windows fornece duas funções de API, InitCommonControls e InitCommonControlsEx, para inicializar bibliotecas de controle personalizadas. Pelos nomes, não é difícil perceber a relação entre essas duas funções da API: a última é um aprimoramento da primeira. Se quiser usar controles IP em seu programa, você deverá usar InitCommonControlsEx para concluir a inicialização de bibliotecas e classes de controle customizadas. O protótipo da função InitCommonControlsEx é o seguinte (sintaxe Pascal):
----...
---- Criar controle de IP
----...
---- Use controle de IP. No programa, nos comunicamos com o controle IP enviando mensagens para ele. O controle IP pode responder às seis mensagens a seguir. Essas mensagens e seus significados são mostrados na tabela abaixo:
----...
---- Se você deseja obter o valor IP correspondente à string IP no controle IP, você deve enviar a mensagem IPM_GETADDRESS para o controle IP, e você precisa usar um endereço inteiro de 32 bits como último parâmetro de SendMessage .
----...
---- Mensagem de notificação de controle de IP
---- Quando a string IP é alterada ou o foco de entrada é transferido, o controle IP enviará a mensagem de notificação IPN_FIELDCHANGED para sua janela pai. Na maioria dos casos, podemos ignorar esta mensagem de notificação. A seguir está um exemplo de tratamento da mensagem de notificação IPN_FIELDCHANGED:
PRocedure Tform1.WndProc(var Msg: TMessage);var p:PNMHDR;begininherited; se Msg.Msg=WM_NOTIFYentão comece p:=Pointer(Msg.lParam); IP controla mensagem de notificação IPN_FIELDCHANGED...} end;end;end;