Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/47: Рейтинг темы: голосов - 47, средняя оценка - 4.60
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449

Поле для ввода ip адреса

26.11.2013, 15:35. Показов 9371. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
подскажите, мб есть готовый компонент для ввода ip адреса?
чтоб автоматически ставил точки (каждые 3 цифры) и удобно отображал ip адрес (выравнивал) и тд
ну надеюсь поняли о чем, я
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.11.2013, 15:35
Ответы с готовыми решениями:

В сделки создать поле для ввода адреса дома(заявителя или клиента) с поиском из списка адресов
Добрый вечер! Есть проблема: Я сделал форму поиска адреса, но не могу сделать сам поиск. Нужно через Rest API подключиться к битриксу и...

Поле ввода IP-адреса
Пытаюсь разобраться с winapi. Необходимо сделать что-либо с элементом управления IP-adress, желательно не просто передать введенный адрес в...

Поле ввода адреса с динамическим выводом подсказки
Всем привет! Подскажите пожалуйста каким образом возможно реализовать поле ввода почтового адреса с выводом подсказки с реальными...

34
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
26.11.2013, 15:46
Есть, вероятно, в новых версиях (maskedit). Только вот не всегда же IP адрес содержит трехзначные поля, - что ж: нули подставлять? сомнительное "удобство".
1
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449
26.11.2013, 15:52  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
Есть, вероятно, в новых версиях (maskedit). Только вот не всегда же IP адрес содержит трехзначные поля, - что ж: нули подставлять? сомнительное "удобство".
ну мне хотя бы такой же edit, как в настройках tcp/ip в винде
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
27.11.2013, 11:49
Tiva,
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 
    MaskEdit1->Font->Name = "Courier";
 
    MaskEdit1->EditMask = "!099.099.099.099;1; ";
 
}
Также можно использовать сторонние компоненты - TJvIpAddress (JEDI), например.
3
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
27.11.2013, 17:17
Нашёл такой код на паскале:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
unit Unit2;
 interface
 uses StdCtrls, CommCtrl, ComCtrls, Controls, Messages, Classes;
 type
 TIPEdit = class(TCustomEdit)
 protected
 procedure CreateParams(var Params: TCreateParams); override;
 end;
 implementation
 procedure TIPEdit.CreateParams(var Params: TCreateParams);
 begin
 InitCommonControl(ICC_INTERNET_CLASSES );
 inherited CreateParams(Params);
 CreateSubClass(Params, WC_IPADDRESS);
 end;
 end.
 ................
 var Edit1: TIPEdit;
 ..................
 
 if not Assigned(Edit1) then begin
 Edit1 := TIPEdit.Create(Self);
 with Edit1 do
 begin
 Name := 'Edit1';
 Parent := Form1;
 Left := 24;
 Top := 16;
 Width := 121;
 Height := 21;
 end;
 SendMessage(Edit1.Handle,IPM_CLEARADDRESS,0,0);
 SendMessage(Edit1.Handle,IPM_SETADDRESS,0,MAKEIPADDRESS(127,0,0,1));
 SendMessage(Edit1.Handle,IPM_SETFOCUS,0,0);
 end;
1
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
27.11.2013, 18:40
Лучший ответ Сообщение было отмечено как решение

Решение

Прочитайте первый пункт вот в этой ссылке
http://nikipolskiy.ucoz.ru/blog/2010-10-03-8
6
96 / 96 / 21
Регистрация: 25.04.2012
Сообщений: 449
29.11.2013, 20:46  [ТС]
Цитата Сообщение от Sasha Посмотреть сообщение
Прочитайте первый пункт вот в этой ссылке
http://nikipolskiy.ucoz.ru/blog/2010-10-03-8
и как брать оттуда значение теперь?
вот с этого кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    wchar_t *as=L"IPAddr";
    wchar_t *az=L"SysIPAddress32";
    INITCOMMONCONTROLSEX CommCtrl;
    CommCtrl.dwSize=sizeof(CommCtrl);
    CommCtrl.dwICC=ICC_INTERNET_CLASSES;
    if(::InitCommonControlsEx(&CommCtrl))
    {
        HWND hWndIP=::CreateWindow(az,as,
        WS_CHILD | WS_TABSTOP | WS_GROUP,10,72,130,24,Handle,0,0,0);
        if (hWndIP) ::ShowWindow(hWndIP, SW_SHOW);
    }
}
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
30.11.2013, 01:15
По пробуй через функцию FindWindowEx()

Добавлено через 3 часа 55 минут
C++
1
2
3
4
  HWND hWnd = FindWindowEx(FindWindow("TForm1",NULL), NULL, "SysIPAddress32", NULL);
  char szTitle[256] = {0};
  SendMessage(hWnd, WM_GETTEXT, 128, (LPARAM)szTitle);
  ShowMessage(AnsiString(szTitle));
Добавлено через 44 секунды
Проверил на 6 билдере работает на Ура!!
1
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
02.12.2013, 11:02
Sasha, а как сделать чтобы клавишы стрелки лево/право работали? и чтобы при вводе значения превышающего 255 после замены вводимого числа на 255 курсор становился после числа?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
02.12.2013, 12:22
Лучший ответ Сообщение было отмечено volvo как решение

Решение

Цитата Сообщение от Kulgar Посмотреть сообщение
чтобы при вводе значения превышающего 255 после замены вводимого числа на 255 курсор становился после числа?
Ловить в родителе (то есть, в WndProc формы) WM_NOTIFY + IPN_FIELDCHANGED, и подменять значение, большее 255 на само 255. Тогда курсор будет не то, что справа после числа, а вообще автоматически перескочит на следующую триаду для ввода очередной порции адреса. Ну, примерно вот так, хотя не компилировал:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void __fastcall TForm1::WndProc(TMessage &Message)
{
    switch (Message.Msg)
    {
        case WM_NOTIFY:
        {
            LPNMHDR lpNMHDR = (LPNMHDR)(Message.LParam);
            switch (lpNMHDR->code)
            {
                case IPN_FIELDCHANGED:
                    LPNMIPADDRESS sIPAddress;
                    sIPAddress = (LPNMIPADDRESS)(Message.LParam);
                    if(sIPAddress->iValue > 255)
                    {
                        sIPAddress->iValue = 255;
                    }
            }
        }
        break;
 
        // тут обработка других сообщений, если нужно
    }
    TForm::WndProc(Message); // interited
}
А стрелки, вроде бы, и так нормально должны работать...
2
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
02.12.2013, 12:47
это ^^^ действительно работает, а вот между полями - ни стрелками, ни Tab'ом переключиться не удается; только мышью.
0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
02.12.2013, 12:53
UI, перескок замечательно сработал.
Цитата Сообщение от UI Посмотреть сообщение
А стрелки, вроде бы, и так нормально должны работать...
*DONT_KNOW* Не работают.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
02.12.2013, 13:00
XE2 - полет нормальный, работают стрелки
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
02.12.2013, 13:52
В 6-билдере стрелки тоже не работают

Добавлено через 39 минут
Вот интересная статейка по установке окна Ip-адреса

http://www.functionx.com/cppbu... ddress.htm
2
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
02.12.2013, 14:49
Цитата Сообщение от UI Посмотреть сообщение
XE2 - полет нормальный, работают стрелки
XE2 - полёт не нормальный, стрелки не работают.
Выложите кто-нибудь проект.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
02.12.2013, 15:08
Пожалуйста (там и EXE-шник оставил, если не боишься, попробуй запусти. Стрелки работают прекрасно):
Вложения
Тип файла: zip IP_Ctrl.zip (164.7 Кб, 56 просмотров)
0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
02.12.2013, 15:12
Цитата Сообщение от UI Посмотреть сообщение
Пожалуйста (там и EXE-шник оставил, если не боишься, попробуй запусти. Стрелки работают прекрасно):
Стрелки работают. Пошёл курить бамбук.
0
 Аватар для Kulgar
511 / 196 / 26
Регистрация: 07.08.2013
Сообщений: 814
02.12.2013, 16:25
UI, создаю VCL forms Application - C++ Builder. Двойной клик по форме, копипаст из Вашего приложения. Стрелки работают.
Добавляю кнопку с обработчиком нажатия:
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    HWND hWnd = FindWindowEx(FindWindow(L"TForm1",NULL), NULL, L"SysIPAddress32", NULL);
    char szTitle[256] = {0};
    SendMessage(hWnd, WM_GETTEXT, 256, (LPARAM)szTitle);
    ShowMessage(AnsiString(szTitle));
}
Стрелки не работают!
Кнопку удаляю - стрелки работают.
Как так может быть?

Плюс в XE2 кнопка работает криво - выводит только 1й символ адреса.
Вложения
Тип файла: rar IPaddress.rar (7.54 Мб, 26 просмотров)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
02.12.2013, 17:03
Цитата Сообщение от Kulgar Посмотреть сообщение
Как так может быть?
Кнопка забирает фокус ввода. Замени TButton, скажем на TSpeedButton - будут работать стрелки...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
    HWND hWnd = ::FindWindowEx(::FindWindow(L"TForm1", NULL), NULL,
        WC_IPADDRESS, NULL);
    DWORD CurAddress;
    LRESULT res = ::SendMessage(hWnd, IPM_GETADDRESS, 0,
        (LPARAM)(LPDWORD) & CurAddress);
 
    ShowMessage(String().sprintf(L"%d.%d.%d.%d",
        FIRST_IPADDRESS((LPARAM)CurAddress),
        SECOND_IPADDRESS((LPARAM)CurAddress),
        THIRD_IPADDRESS((LPARAM)CurAddress),
        FOURTH_IPADDRESS((LPARAM)CurAddress)));
}
(Почему нельзя запомнить при создании хендл IP-контрола, а надо его искать на форме - это выше моего понимания)...
1
2 / 2 / 0
Регистрация: 23.06.2014
Сообщений: 23
23.06.2014, 10:27
А если нет возможности удалить кнопку, как можно вернуться фокус на поле ввода?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.06.2014, 10:27
Помогаю со студенческими работами здесь

Как сделать запрет ввода букв в поле для ввода input
Здравствуйте! Есть стандартное поле ввода <input type='text' name='name1' size='30' maxlength='11'> предназначенное для ввода...

Нужно сделать поле ввода для ввода даты по шаблону
Нужно сделать поле ввода для ввода даты по шаблону ( __ . __ . ____ ). При воде нужно будет вводить только цифры, а разделители...

Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода пароля
4.Реализовать в JavaScript контроль ошибок ввода данных в поле, предназначенное для ввода пароля.

Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода времени
5.Реализовать в JavaScript контроль ошибок ввода данных в поле, предназначенное для ввода времени.

Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода номера телефона
1.Реализовать в JavaScript контроль ошибок ввода данных в поле, предназначенное для ввода номера телефона.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru