Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Как использовать IP Address Control у себя?

Поиск:
Код
{
 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
}

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.






Просмотров: 2017

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную