Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как недопустить текстовые символы в edit?


49 Cent ©   (2006-02-25 04:32:00) 

Есть 4 tedit и необходимо, чтобы в них заносились только цифры и никаких букв и символов. Каким образом выполнить эту задачу? Обязательно писать код или может в свойствах компонента можно установить подобную настройку?


Pit   (2006-02-25 21:46:00) [1]


> Галинка ©   (25.02.06 21:42) [15]
> Поддерживаю идею разрешить вводить все, а потом в защищенном
> блоке отлавливать исключение. Муторно, но надежно. Да и
> опечатки могут быть...


ДА я тоже за еееето.  Даздравствует руськуя могучая языка.


Галинка   (2006-02-25 21:42:00) [2]

Поддерживаю идею разрешить вводить все, а потом в защищенном блоке отлавливать исключение. Муторно, но надежно. Да и опечатки могут быть...


Pit   (2006-02-25 21:29:00) [3]

Уважаемые програмисты новый ник-нейм Defunct= funct or def.


Defunct   (2006-02-25 21:19:00) [4]

Pit ©   (25.02.06 21:03) [12]

нет проблем, можете звать меня funct или def если вам так будет удобней ;>


Pit   (2006-02-25 21:03:00) [5]

Давайте больше не будем о грустом, и не будем засорять форум ненужными фразами. Я извинился и по моему проблемма исчерпона. С уважением Pit.


Defunct   (2006-02-25 20:42:00) [6]

Джо ©   (25.02.06 20:26) [8]

Это ему мой ник-нейм не нравится :)


Pit   (2006-02-25 20:39:00) [7]

Извини Джо первая мысль перевала, вторая подумала.


Pit   (2006-02-25 20:33:00) [8]

Нет не шутка, просто первая моя так сказать специализация is  English, извини если обидел, был не прав, чего только не подумаешь, у каждого свои заморочки.


Джо   (2006-02-25 20:26:00) [9]

> [7] Pit ©   (25.02.06 19:51)
> defunct [defunct]
> прил. усопший, покойный, умерший, несуществующий, исчезнувший,
> вымерший
> Зачем же так плохо обо мне.

Нет, это ни в коем случае не о тебе. Или это шутка? Или просто пароксизм?


Pit   (2006-02-25 19:51:00) [10]


> Джо ©   (25.02.06 19:43) [6]
> Поддерживаю [1] Defunct


defunct [defunct]
прил. усопший, покойный, умерший, несуществующий, исчезнувший, вымерший
Зачем же так плохо обо мне.


Джо   (2006-02-25 19:43:00) [11]

Все 3 варианта не помешают вставке чего угодно из Буфера обмена. Поддерживаю [1] Defunct (последнее предложение).


Pit   (2006-02-25 18:39:00) [12]

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'0' .. '9',#8: ; // цифры и клавиша <Backspace>
else Key := Chr(0);
end;
end;


Pit   (2006-02-25 18:38:00) [13]

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'a' .. 'z','A' .. 'Z': ;
else Key := Chr(0);
end;
end;


49 Cent   (2006-02-25 18:33:00) [14]

2 Fay и Defunct

Спасибо за помощь! По вашим подсказкам нашел 2 варианта решения проблемы:

1. SetWindowLong(Edit1.Handle, GWL_STYLE,GetWindowLong(Edit1.Handle, GWL_STYLE) or  ES_NUMBER );
2. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if not (Key in ['0'..'9',#8]) then Key:=#0;
end;


Fay   (2006-02-25 06:31:00) [15]

ES_NUMBER


Defunct   (2006-02-25 04:52:00) [16]

ответ на ваш вопрос:
в OnKeyPress если прочитано что-то, что вам не нужно просто заменить символом #0.

наводящий пример (здесь при вводе не пропускаются буквы, но пропускаются некоторые символы):
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if Byte(Key) > $39 then
    Key := #0;
end;



но можно пойти более правильным путем. Пусть пользователь пишет то, что посчитает нужным, а когда он все введет, по нажатию например кнопки "Ок" - проверить правильность всего введенного.


Наверх

Титульная страница Поиск, карта сайта Написать письмо