Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];

Вниз

Как обеспечить корректный ввод IP-адреса ?   Найти похожие ветки 

 
UnDISCOvery   (2002-06-04 16:42) [0]

Уважаемые ! Сабж !
Подскажите, плиз. А то сижу уже битый час - мучаюсь с этим гребанным MaskEdit. Наверняка кто-то уже делал ... Нужно чтобы было как в Виндах ... мол вводишь 2 цифры, и они сами становятся последними ... и тд


 
MAxiMum   (2002-06-04 16:58) [1]

С помощью MaskEdit не удобно (удобнее написать свой компонент), но тем не менее: EditMask := "990\.990\.990\.990;1; "; - если обязательные цифры только перед точками и EditMask := "000\.000\.000\.000;1; "; - если все цифры обязательны (рекомендуется).


 
Song   (2002-06-04 18:37) [2]

Есть отличный пример но большой. Трудностей не боитесь ? :))


 
Song   (2002-06-04 18:47) [3]


unit Unit1;

interface

uses
Windows, Messages, Classes, Forms, Controls, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: 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, Unit2;

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, Left, Top, Width, 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.


За место выделенных участков Вам необходимо подставить свои значения.


 
Song   (2002-06-04 18:49) [4]

Подробней на
http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/ipaddress/ipaddress.asp



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.06.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
4-55351
Sergn
2002-04-12 21:22
2002.06.17
ShowWindow(wndHandle, SW_RESTORE) и минимизация приложения


6-55235
Tom
2002-04-05 13:26
2002.06.17
Как установить длину буфера? (WNetGetUniversalName)


1-55144
PETR
2002-06-04 10:41
2002.06.17
Подскажите !!!!


7-55335
Miron666
2002-03-18 10:38
2002.06.17
прямой доступ к портам из сервисных программ Win2000


3-55017
Explorer
2002-05-23 15:08
2002.06.17
Ошибка при работе с Query





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский