{
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;
Программный код на Delphi, демонстрирующий использование контрола IP-адреса, который позволяет пользователю ввести числовой адрес в формате интернет-протокола (IP).
Содержание кода:
Код начинается с объявления формы с тремя компонентами: IPAddress (компонент Bevel), кнопками SetIP и ClearIP.
В процедуре FormCreate код инициализирует контрол IP-адреса, создавая окно с классом WC_IPADDRESS.
Процедура NewWindowProc используется для обработки сообщений, отправленных в контрол IP-адреса. Она проверяет типы сообщений (например, WM_NOTIFY, WM_COMMAND) и выполняет соответствующие действия.
Когда пользователь нажимает кнопку SetIP, она устанавливает IP-адрес в значение 127.0.0.1 с помощью сообщения IPM_SETADDRESS.
Когда пользователь нажимает кнопку ClearIP, она очищает IP-адрес с помощью сообщения IPM_CLEARADDRESS.
Чтобы использовать этот код в своем проекте Delphi:
Создайте новую форму с компонентом Bevel и двумя кнопками (например, SetIP и ClearIP).
Добавьте следующие единицы к вашему списку использования: CommCtrl, Windows, Messages, Classes, Forms, Controls, StdCtrls и ExtCtrls.
Объявите те же переменные и процедуры, что и в коде.
Позвользуйте вызвать процедуру FormCreate в конструкторе вашей формы.
Добавьте обработчики событий для кнопок SetIP и ClearIP.
Обратите внимание, что этот код является quite old и может потребовать некоторых модификаций, чтобы работать с более новыми версиями Delphi. Кроме того, рекомендуется использовать более современные и надежные способы обрабатывать ввод пользователя и валидацию.
Статья описывает, как использовать контрол IP Address Control в приложении на языке Delphi для ввода и обработки IP-адресов.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.