Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.026 c
1-1174550871
Iks
2007-03-22 11:07
2007.05.20
TStringGrid на манер грида в Mozilla Thunderbird


2-1178093069
RomanLN
2007-05-02 12:04
2007.05.20
помогите новечку


2-1178084210
VitAngel
2007-05-02 09:36
2007.05.20
Полоска копирования


15-1176777846
Slider007
2007-04-17 06:44
2007.05.20
С днем рождения ! 17 апреля


1-1174671272
rockman_
2007-03-23 20:34
2007.05.20
Перенос по словам в рядке-заголовке StringGrid




   Наверх