Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.056 c