unit frmEasySettings;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ImgList, ToolWin, StdCtrls, Registry, ShellApi, ExtCtrls;
type
TForm1 =
class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ImageList1: TImageList;
GroupBox1: TGroupBox;
ComboBox1: TComboBox;
Label1: TLabel;
ComboBox2: TComboBox;
IPAddress: TEdit;
procedure ToolButton1Click(Sender: TObject);
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
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
CommCtrl;
const
IP_ADDRESS_ID: Longword = $0100;
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
close;
end;
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,
Tabsheet1.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.