----- Dans les programmes réseau, nous rencontrons souvent des situations où les utilisateurs doivent saisir des adresses IP. Cependant, Delphi ne nous fournit pas de contrôle pouvant être utilisé pour saisir la chaîne IP, nous devons donc utiliser le contrôle Tedit (zone de texte sur une seule ligne) pour accepter la chaîne IP saisie par l'utilisateur. Cependant, utiliser Tedit pour saisir la chaîne IP n’est pas une bonne idée car c’est très peu pratique à gérer. En fait, il y a un contrôle Windows à côté de nous spécifiquement pour saisir les chaînes IP, comme le montre la figure. Le contrôle IP rejettera les chaînes IP illégales (seuls les nombres compris entre 0 et 255 peuvent être saisis dans chaque partie) ; cela vous permet d'obtenir facilement la valeur IP (entier 32 bits) correspondant à la chaîne IP dans le contrôle ; vous évite d'avoir à convertir entre les chaînes IP et les valeurs IP ; en outre, vous pouvez également limiter la plage d'adresses IP pouvant être saisies dans le contrôle IP. Dans cet article, je vais vous présenter comment utiliser les contrôles IP Windows dans nos programmes Delphi.
---- Il existe deux bibliothèques de liens dynamiques très importantes dans Windows : commctrl.dll et comctl32.dll, qui sont les bibliothèques de contrôles personnalisés de Windows (Windows Common Controls). La bibliothèque de contrôles personnalisés contient de nombreux contrôles Windows couramment utilisés, tels que Statusbar, Coolbar, HotKey, etc. dans Delphi, la plupart de ces contrôles ont été regroupés sous forme de contrôles visuels. Après que Microsoft a lancé Internet Explorer 3, de nouveaux contrôles ont été ajoutés à la bibliothèque de contrôles personnalisés, notamment le contrôle IP Windows (contrôle d'édition d'adresse IP).
---- Initialiser la bibliothèque de contrôles personnalisés Windows
---- Windows fournit deux fonctions API, InitCommonControls et InitCommonControlsEx, pour initialiser les bibliothèques de contrôles personnalisés. D’après les noms, il n’est pas difficile de voir la relation entre ces deux fonctions API : la dernière est une amélioration de la première. Si vous souhaitez utiliser des contrôles IP dans votre programme, vous devez utiliser InitCommonControlsEx pour terminer l'initialisation des bibliothèques et classes de contrôles personnalisés. Le prototype de la fonction InitCommonControlsEx est le suivant (syntaxe Pascal) :
----...
---- Créer un contrôle IP
----...
---- Utilisez le contrôle IP. Dans le programme, nous communiquons avec le contrôle IP en lui envoyant des messages. Le contrôle IP peut répondre aux six messages suivants. Ces messages et leurs significations sont indiqués dans le tableau ci-dessous :
----...
---- Si vous souhaitez obtenir la valeur IP correspondant à la chaîne IP dans le contrôle IP, vous devez envoyer le message IPM_GETADDRESS au contrôle IP et vous devez utiliser une adresse entière de 32 bits comme dernier paramètre de SendMessage. .
----...
---- Message de notification du contrôle IP
---- Lorsque la chaîne IP est modifiée ou que le focus d'entrée est transféré, le contrôle IP enverra le message de notification IPN_FIELDCHANGED à sa fenêtre parent. Dans la plupart des cas, nous pouvons ignorer ce message de notification. Voici un exemple de gestion du message de notification IPN_FIELDCHANGED :
PRocedure Tform1.WndProc(var Msg: TMessage);var p:PNMHDR;begininherited; if Msg.Msg=WM_NOTIFYthen start p:=Pointer(Msg.lParam); if p^.code=IPN_FIELDCHANGED alors start{...traitement de Contrôles IP Message de notification IPN_FIELDCHANGED...} end;end;end;