Автор |
Сообщение |
Sheh Гость |
|
Собственно, как? Например, есть Edit1. Мне нужно, чтобы туда вводились тока цифры, к тому же в определенном диапазоне. Смотрел компонент EditMask, но он не подходит мне, т.к. в последующем к тому что я ввел в это окошко нужно применять функцию преобразования строки в число StrToInt, а эта самая маска дописывает туда вместо не введенных цифр то символы '_', то '0' (в зависимости от того какая маска). Ну и естественно в таком случае преобразование строки в число работает некорректно. Че делать? |
|
|
|
|
Klayd Гуру Предупреждений : 1
|
|
на кейдаун (кажется) для едита вешаешь обработчик, где проверяешь какая кнопка нажата... если всё нормально, то оставляешь, если нет, то заменяешь тот символ, который на входе на пустой.
эх давно я с этими билдерами/делфями не общался... попробуй так... |
|
|
|
|
Andron_ Гуру Предупреждений : 4
|
|
Обрабатывать событие OnKeyPress.
пример есть в Архангельском. |
|
|
|
|
Klayd Гуру Предупреждений : 1
|
|
всётаки кейпресс? )) чёрт... а я всё думал толи он толи кейдаун... |
|
|
|
|
Sheh Гость |
|
Andron_ писал(а): |
Обрабатывать событие OnKeyPress.
пример есть в Архангельском. |
А можешь закинуть эту книжку на risp? Ато в инете 17 мегов весит |
|
|
|
|
Sheh Гость |
|
Вот решение, всем спасибо!
void __fastcall TForm1::Edit2KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key<96 || Key>105) // Проверка на ввод только чисел
{
MessageDlg("Введите число!", mtInformation, TMsgDlgButtons() << mbOK,0);
Edit2->Text=Edit2->Text.Delete(Edit2->Text.Length(), 1); // удаление неправильного символа
}
}
|
|
|
|
|
Klayd Гуру Предупреждений : 1
|
|
а вот это обязательно?
Edit2->Text=Edit2->Text.Delete(Edit2->Text.Length(), 1);
а разве нельзя просто сделать Key="/0" или в обратную сторону слэш... вобщем я имел в виду пустой символ ну или чтото типа того ))
както я раньше такие штуки делал буквально одним присваиванием... и кажется работало... )) |
|
|
|
|
andryv Форумчанин |
|
Klayd
а это как раз какое событие ловить - если кейдаун, то туда интовый код клавиши передается, и там можно просто его занулить, а в кейпрессе уже чар.. хотя это кажется...
На сомом деле лучше ловить ексепшены от strotint и по ним ругаться уже, а по событиям ничего не делать и дать юзеру вводить чего ему угодно, потому как заказчиков жутко раздражает када на каждое нажатие ругается прога |
|
|
|
|
Klayd Гуру Предупреждений : 1
|
|
ыыы, andryv, а я уже и забыл об этом их свойстве... )) |
|
|
|
|
Andron_ Гуру Предупреждений : 4
|
|
Sheh писал(а): |
Ато в инете 17 мегов весит |
у меня она килограмма 2 весит
Klayd писал(а): |
всётаки кейпресс? |
а фик бы знал чтоно... не помню. |
|
|
|
|
|