Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.20;
Скачать: CL | DM;

Вниз

EditKeyPress   Найти похожие ветки 

 
Серый ©   (2007-05-03 18:29) [0]

Как в процедуре EditKeyPress сделать так, чтобы в поле Edit вводили торлько цифры от 1 до 20?


 
clickmaker ©   (2007-05-03 18:36) [1]

if not (Key in ["0".."9", #8]) then Key := #0;


 
RomanLN   (2007-05-03 18:37) [2]

procedure TForm2.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  case Key of
    "0".."9": ;
     #8 : ;
  else Key :=Chr(0);
  end;
end;


 
Ega23 ©   (2007-05-03 18:39) [3]

цифр всего 10.


 
Серый ©   (2007-05-03 18:47) [4]

Такие варианты не подходят.Надо чтобы можно было вводить только цифры от 1 до 20 НЕ БОЛЕЕ!


 
clickmaker ©   (2007-05-03 18:52) [5]

TMaskEdit + EditMask
TSpinEdit + MinValue & MaxValue
наконец, просто TEdit с проверкой в своем OnExit


 
Ega23 ©   (2007-05-03 18:53) [6]


> Такие варианты не подходят.Надо чтобы можно было вводить
> только цифры от 1 до 20 НЕ БОЛЕЕ!
>


Ты как, арифметику в школе изучал? В десятиричной системе счисления ЦИФР ВСЕГО 10
0, 1, 2, 3, 4, 5 , 6, 7, 8 и 9
Цифры 10 или 20 - нет.


 
Kostafey ©   (2007-05-04 00:13) [7]

По моему на форуме что-то подобное уже писали.
Выглядит дико, но работает:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Length((Sender as TEdit).Text)=20)   then
begin
  if (Key=#8) or (Key=#83) then exit;
  Key:=#0;
  exit;
end;
case Key of
  "0".."9", #8: ;   //1-9,BackSpase -- принимаем
  "-":              //знак "минус"
    begin
      if (Pos("-",(Sender as TEdit).text)<>0)
        then        //разрешаем введение только одного знака "минус"
        begin
          Key:=#0;
          exit;
        end;
      if (Sender as TEdit).SelStart<>0 then
        begin       //Проверяем стоит ли знак "минус" в начале числа
          Key:=#0;
          (Sender as TEdit).Text:="-"+(Sender as TEdit).Text;
          (Sender as TEdit).SelStart :=Length((Sender as TEdit).text);
        end;
    end;
  "," , ".":        //разделители
    begin
      Key:=DecimalSeparator;//заменим разделитель на допустимый
      if (length((Sender as TEdit).text)=0) or ((Sender as TEdit).text="-")
      then
        begin
          Key:=chr(0);
          (Sender as TEdit).text:=(Sender as TEdit).text+"0"+DecimalSeparator;
          (Sender as TEdit).SelStart :=Length((Sender as TEdit).text);
        end
      else
        if (Pos(DecimalSeparator,(Sender as TEdit).text)<>0)
        then Key:=#0;       //разрешаем введение только одного разделителя
    end;
  else
    begin
      Key := #0;    //иначе символ не вводиться
    end;
end;
end;


 
ppcumax ©   (2007-05-04 00:39) [8]

Используй SpinEdit и не парься


 
Германн ©   (2007-05-04 00:55) [9]


> ppcumax ©   (04.05.07 00:39) [8]
>
> Используй SpinEdit и не парься
>

Так ты сначала сообщи автору, что в палитре компонентов в Дельфи много вкладок. И что сначала стоило бы по ним полазать и посмотреть, что в этих вкладках есть. А то многие дальше Standard никогда и не лазали. :)


 
Leonid Troyanovsky ©   (2007-05-04 12:00) [10]


> Kostafey ©   (04.05.07 00:13) [7]

> Выглядит дико, но работает:

На лицо ужасные, добрые внутри? ;)

Проще анализировать Val в OnChange и, например,
удалять недопустимые символы (с обязательным
уведомлением юзера).
См. http://rsdn.rsdn.ru/Forum/Message.aspx?mid=626935&only=1

--
Regards, LVT.


 
Kostafey ©   (2007-05-04 12:45) [11]

> См. http://rsdn.rsdn.ru/Forum/Message.aspx?mid=626935&only=1

Да уж. Здорово! Красиво и изящно.
Беру на вооружение :)



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

Текущий архив: 2007.05.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.045 c
15-1176885141
Карелин Артем
2007-04-18 12:32
2007.05.20
Вода из водопровода vs вода из бутыли.


6-1163203218
Суслик
2006-11-11 03:00
2007.05.20
AJAX and Delphi


2-1177655849
OlegMV
2007-04-27 10:37
2007.05.20
Проблема с координатами


2-1177754204
ZX Alex
2007-04-28 13:56
2007.05.20
Получать уведомления об операциях с файлами


15-1176901225
parus
2007-04-18 17:00
2007.05.20
PHP