Das IP-Eingabefeld sendet die Nachricht "IPN_FIELDCHANGED" als Teil von "WM_NOTIFY", sobald sich irgendetwas ändert. Das betrifft allerdings nicht nur die Änderung von Werten der einzelnen Bytefelder. Die Nachricht wird auch gesendet, wenn man sich innerhalb des Controls mit der Maus oder den Pfeiltasten von einem Bytefeld zum nächsten bewegt.
Das Beispielprogramm verdeutlicht dieses Prinzip, in dem es bei jedem Auftreten der Nachricht den Wert des geänderten Feldes heraussucht und im Label anzeigt:
WM_NOTIFY:
if(PNMIpAddress(lp)^.hdr.Code = IPN_FIELDCHANGED) then
begin
IpStr := Format('Feld "%d" enthält Wert "%d"',
[POINTER(PNMIpAddress(lp)^.iField + 1),
POINTER(PNMIpAddress(lp)^.iValue)]);
SendMessage(hLabel,WM_SETTEXT,0,LPARAM(@IpStr[1]));
end;
Außerdem besitzt das IP-Feld eine typische Eigenschaft der bekannten
EN_CHANGE" ausgelöst. Das heißt: Sie können bereits während der Eingabe reagieren. Das kann z.B. hilfreich sein, wenn Sie bestimmte Elemente in Abhängigkeit von einer korrekten Ein- oder Angabe aktivieren oder deaktivieren möchten.
WM_COMMAND:
if(HIWORD(wp) = EN_CHANGE) and (LOWORD(wp) = IDC_IPCTRL) then
begin
{ ... }
end;