Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.06 c
4-1166364120
klimov
2006-12-17 17:02
2007.05.20
Как в сервисе подождать пока чужое приложение не будет запущено?


15-1177185222
alex-drob
2007-04-21 23:53
2007.05.20
Пропадают файлы с винчестера


2-1173078223
MZ
2007-03-05 10:03
2007.05.20
dbGridEh и CheckBox


1-1174579137
DelphiLexx
2007-03-22 18:58
2007.05.20
Рассылка сообщений дочерним окнам


15-1176835024
ANTPro
2007-04-17 22:37
2007.05.20
Военкомат





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский