Microsoft ® Internet Explorer представляет элемент управления IP-адрес, новый элемент управления похож на элемент управления редактирования, что позволяет пользователю ввести
числовой адрес в сети Интернет-протокола (IP). Этот формат состоит из четырех трехзначных полей. Каждое поле обрабатывается индивидуально; номера полей основываются на нулях и
перейдите слева направо.
Code: |
unit Unit1;
interface
uses Windows, Messages, Classes, Forms, Controls, StdCtrls, ExtCtrls;
type TForm1 = class(TForm) IPAddress: TBevel; SetIP: TButton; ClearIP: TButton; procedure FormCreate(Sender: TObject); procedure SetIPClick(Sender: TObject); procedure ClearIPClick(Sender: TObject); private FIPAddress: Longint; HIPAddress: HWND; PrevWndProc: TWndMethod; procedure NewWindowProc(var Message: TMessage); public end;
var Form1: TForm1;
implementation
{$R *.dfm}
uses CommCtrl;
const IP_ADDRESS_ID: Longword = $0100;
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;
HIPAddress := CreateWindowEx(WS_EX_LEFT, WC_IPADDRESS, nil, WS_CHILD + WS_VISIBLE + WS_BORDER + WS_TABSTOP, IPAddress.Left, IPAddress.Top, IPAddress.Width, IPAddress.Height, Handle, IP_ADDRESS_ID, HInstance, nil); SendMessage(HIPAddress, IPM_SETFOCUS, 0, 0); end; end;
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;
procedure TForm1.SetIPClick(Sender: TObject); begin FIPAddress := MAKEIPADDRESS(127, 0, 0, 1); SendMessage(HIPAddress, IPM_SETADDRESS, 0, lParam(DWORD(FIPAddress))); end;
procedure TForm1.ClearIPClick(Sender: TObject); begin SendMessage(HIPAddress, IPM_CLEARADDRESS, 0, 0); end;
end. |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!