Solange es nur auf Windows laufen soll, ist es egal welche Compiler verwendet wird, da Windows sleber schon seit Jahren eine entsprechende Komponente anbietet.
leider fehlt diese nur in fast jeder Entwicklungsumgebung.
>>
SysIPAddress32 /
WC_IPADDRESS
Delphi-Quellcode:
// InitCommonControlsEx + ICC_INTERNET_CLASSES
Const
IPN_FIRST = UINT(-860);
IPN_LAST = UINT(-879);
Const WC_IPADDRESS = '
SysIPAddress32';
// IP Address Edit Control Messages
IPM_CLEARADDRESS = WM_USER + 100;
IPM_SETADDRESS = WM_USER + 101;
IPM_GETADDRESS = WM_USER + 102;
IPM_SETRANGE = WM_USER + 103;
IPM_SETFOCUS = WM_USER + 104;
IPM_ISBLANK = WM_USER + 105;
// IP Address Edit Control Notification Codes
IPN_FIELDCHANGED = IPN_FIRST - 0;
Type NMIPADDRESS =
packed Record {IPN_FIELDCHANGED}
hdr: NMHDR;
iField: _INT;
iValue: _INT;
End;
pNMIPADDRESS = ^NMIPADDRESS;
einige nette Funktionen/Makros > siehe
PSDK
Delphi-Quellcode:
Function MAKEIPRANGE (Low, High: BYTE): DWORD;
Function MAKEIPADDRESS (B1, B2, B3, B4: BYTE): DWORD;
Function FIRST_IPADDRESS (X: DWORD): BYTE;
Function SECOND_IPADDRESS(X: DWORD): BYTE;
Function THIRD_IPADDRESS (X: DWORD): BYTE;
Function FOURTH_IPADDRESS(X: DWORD): BYTE;
Erstellung in
nonVCL:
Delphi-Quellcode:
Handle := CreateWindowExW(0, WC_IPADDRESS,
nil, WS_CHILD
or WS_VISIBLE
or WS_TABSTOP, Left, Top, Width, Height, Parent, DlgID, HInstance,
nil);
'ne fertiges Objekt hab ich derzeit aber nicht rumliegen
Jedenfalls versteckt sich grad irgendeinfehler in meiner Demo
[add]
'nen leeres Projekt und dann dieses ... Ergebnis = siehe Anhang
Delphi-Quellcode:
const
WC_IPADDRESS = '
SysIPAddress32';
IPM_SETADDRESS = WM_USER + 101;
procedure TForm1.FormCreate(Sender: TObject);
var
H: HWND;
begin
Randomize;
H := CreateWindowEx(0, WC_IPADDRESS,
nil, WS_CHILD
or WS_VISIBLE
or WS_TABSTOP, Left, Top, 120, 21,
Handle, 0, HInstance,
nil);
SendMessage(H, IPM_SETADDRESS, 0, Random($7fffffff));
end;