{
Microsoft® Internet Explorer Version 4.0 introduces the IP address control,
a new control similar to an edit control that allows the user to enter a
numeric address in Internet protocol (IP) format.
This format consists of four three-digit fields.
Each field is treated individually; the field numbers are zero-based and
proceed from left to right as shown in this figure.
Further informations
http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/ipaddress/ipaddress.asp
}
procedure TForm1.FormCreate(Sender: TObject); var lpInitCtrls: TInitCommonControlsEx; begin lpInitCtrls.dwSize := SizeOf(TInitCommonControlsEx);
lpInitCtrls.dwICC := ICC_INTERNET_CLASSES; if InitCommonControlsEx(lpInitCtrls) then
begin PrevWndProc := WindowProc;
WindowProc := NewWindowProc;
procedure TForm1.NewWindowProc(var Message: TMessage); var nField: longint; begin
case Message.Msg of WM_NOTIFY: begin
if PNMHDR(Ptr(Message.lParam)).idFrom = IP_ADDRESS_ID then
begin
case PNMIPAddress(ptr(Message.lParam)).hdr.code of IPN_FIELDCHANGED: begin
if SendMessage(HIPAddress, IPM_ISBLANK, 0, 0) = 0 then SendMessage(HIPAddress, IPM_GETADDRESS, 0, lParam(LPDWORD(@FIPAddress))); end; end; end; end;
WM_COMMAND: begin
if Message.WParamLo = IP_ADDRESS_ID then
case Message.WParamHi of EN_SETFOCUS: begin nField := SendMessage(HIPAddress, IPM_GETADDRESS, 0,
lParam(LPDWORD(@FIPAddress))); if nField = 4 then nField := 0;
SendMessage(HIPAddress, IPM_SETFOCUS, wParam(nField), 0); end;
EN_KILLFOCUS: begin
if SendMessage(HIPAddress, IPM_ISBLANK, 0, 0) = 0 then SendMessage(HIPAddress, IPM_GETADDRESS, 0, lParam(LPDWORD(@FIPAddress))); end;
EN_CHANGE: begin
end; end; end; end; if Assigned(PrevWndProc) then PrevWndproc(Message); end;