Главная страница
    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.056 c
1-1173960784
kyn66
2007-03-15 15:13
2007.05.20
Горячие клавиши на форме!


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


2-1177728215
Pekar
2007-04-28 06:43
2007.05.20
Имя текущего пользователя


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


15-1177340432
oldman
2007-04-23 19:00
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский