Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > А как сделать также?


Автор: Bibimij 20.10.2005, 19:59
Прилагается картиночка... smile
Вопрос:как сделать такую же строку ввода, чтобы у каждого октета была своя область, как у Мелкомягкихна картинке(указано красной стрелкой! smile ) smile

Автор: Bibimij 20.10.2005, 20:30
Народ! Смотреть-то все умеют! Написали бы хоть для приличия что-нибудь... smile

Автор: Quadr0 20.10.2005, 20:53
...

Автор: Самурай 20.10.2005, 21:01
А разве обычный MaskEdit не подойдет? Ведь можно задать маску, а потом заменить все получившиеся пробелы пустыми символами, благодаря чему мы получим практически такую же форму ввода интформации.

Автор: Quadr0 20.10.2005, 21:08
...

Автор: Alex 20.10.2005, 21:12
http://vingrad.ru/DELPHI-DLP-002563

Автор: Самурай 20.10.2005, 21:17
Цитата(Quadr0 @ 20.10.2005, 21:08)
А какой маской ты бы задал ip адрес в MaskEdit?

"!999/999/999;1; "
А потом бы сделал str:=StringRaplace(MaskEdit1.Text, ' ', '', [rfReplaceAll]);


Автор: Bibimij 21.10.2005, 18:31
Цитата(Alex @ 20.10.2005, 21:12)
http://vingrad.ru/DELPHI-DLP-002563

Там, конечно же, всё прекрасно, но есть недочёт! Нельзя перемещаться, используя навигациооные клавиши! smile
smile
А теперь вопрос.

Как это сделать?

Автор: DemoCode 21.10.2005, 19:03
лови onKeyDown, например, и если код клавиши = код навигационной клавише устанавливай курсор в следующую позицию

Автор: Bibimij 21.10.2005, 19:45
Цитата(DemoCode @ 21.10.2005, 19:03)
лови onKeyDown, например, и если код клавиши = код навигационной клавише устанавливай курсор в следующую позицию

Это я и без тебя понял! Делоне в этом, а в том, что я не совсем разобрался с кодом и не знаю где можно управлять курсором! smile smile smile Кто-нибудь подскажите!

Автор: Самурай 21.10.2005, 20:15
Цитата(Bibimij @ 21.10.2005, 20:45)
не знаю где можно управлять курсором!

Вот пример:
Код

procedure TForm1.Edit1Change(Sender: TObject);
begin
 Edit1.SelStart:=1
end;

После изменения текста в компоненте Edit курсор будет всегда ставиться за первую букву (в общем случае символ).

Автор: DemoCode 22.10.2005, 08:24
Вот как примерно это может быть реализовано:
Я написал пример только для клавиши ("стрелка вправо"), для "влево" тоже самое только наоборот. Используется компонент TMaskEdit.

Код

procedure TForm1.FormCreate(Sender: TObject);
begin
   MaskEdit1.EditMask:='999.999.999.999';
end;

procedure TForm1.MaskEdit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
   I, P: Integer;
   S: string;
begin
   // Если нажата клавиша "вправо"
   if Key = VK_Right then
   begin
      // Узнаем где сейчас находится курсор
      P:=MaskEdit1.SelStart;
      // Ищем ближайшую точку справа (если она есть) и устанавливаем курсор за ней
      for I:=P+1 to Length(MaskEdit1.Text)-1 do
      begin
        S:=Copy(MaskEdit1.Text,I,1);
        if S = '.' then
        begin
           MaskEdit1.SelStart:=I;
           break;
        end;
      end;
   end;
end;

Автор: Stolzen 25.10.2005, 04:28
на ONCHANGE:

Код

 if StrToInt((Sender as TEdit).Text) > 255 then
  (Sender as TEdit).Text := '255';

 if Length((Sender as TEdit).Text) = 3 then nsip2.SetFocus;



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)