![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как организовать ввод в edit
skilful © (2010-04-27 20:20:00)всем привет.
как организовать контроль ввода данных в edit - необходимо вводить HEX число
я делаю в
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
if not (Key in [ #8,#127, '0'..'9', 'a'..'f', 'A'..'F']) then
key := #0;
но в этом случае невозможно в edit вставлять значение из буфера обмена (по ctrl + v). Как это победить?
skilful (2010-04-27 21:17:00) [21]в моей задаче необходимо выборочно из hex делать dec, причем чисел достаточно много. "кривизны" данных, попадающих в программу, нет. Так что ctrl+v было бы удобным...
Lyonux (2010-04-27 20:58:00) [22]
> {RASkov} © (27.04.10 20:51) [10]
> > [7] Lyonux © (27.04.10 20:39)> Нет нет, "v" у него разрешено))
> условие стоит: if not ... > then key:=#0;Как же разрешено,
> если нажата V, а она не в допустимых символах, тогда клавиша
> "затирается" #0
Грешу( Посчитала весь алфавит..всё моя невнимательность) Ну тогда товарищу можно посоветовать менюшку и shift+Insert) Этого никто не отменял :)
А ещё можно добавить в условие символ 'v') Но это добавит лишних проблем, я думаю) Так что я последний абзац я не писала)
{RASkov} (2010-04-27 20:51:00) [23]> [7] Lyonux © (27.04.10 20:39)
> Нет нет, "v" у него разрешено)) условие стоит: if not ...
> then key:=#0;
Как же разрешено, если нажата V, а она не в допустимых символах, тогда клавиша "затирается" #0
{RASkov} (2010-04-27 20:48:00) [24]лучше уж на WM_PASTE среагировать...
Lyonux (2010-04-27 20:41:00) [25]так в чём смысл разрешения обработки ctrl+v?) В привычном для пользователя хоткее или возможности вставки?)
Lyonux (2010-04-27 20:39:00) [26]
> {RASkov} © (27.04.10 20:32) [2]
> В OnKeyPress не все клавиши попадают.... Ctrl туда не попадает,
> а v ты запретил... + [1]
Нет нет, "v" у него разрешено)) условие стоит: if not ... then key:=#0;
Но смысла в этой обработке ctrl+v, я думаю, нет) Если, конечно, не стоит обработчик на какой-нибудь кнопке: if not ... then exit{show.messege('')} else begin ...;
И всё равно не нужна здесь обработка ctrl+v, я так думаю)
DVM (2010-04-27 20:38:00) [27]
> (Key in [ #8,#127, '0'..'9', 'a'..'f', 'A'..'F'])
кстати, в Delphi 2009-2010 это некошерная теперь запись. CharInSet надо
{RASkov} (2010-04-27 20:35:00) [28]> [3] Lyonux © (27.04.10 20:33)
> Предлагаю такой вариант) Попробуйте :)
а как же попап меню и "Вставить"? :)
{RASkov} (2010-04-27 20:33:00) [29]> [0] skilful © (27.04.10 20:20)
> Вас не смущает тот факт, что по ctrl + v в едит может быть
> вставлено что угодно?)
попробуй комбинацию Shift+Ins
Lyonux (2010-04-27 20:33:00) [30]Предлагаю такой вариант) Попробуйте :)
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
if not ((Key in [ #8,#127, '0'..'9', 'a'..'f', 'A'..'F']) and ((Key = ord('V')) and (ssCtrl in Shift))) then
key := #0;
{RASkov} (2010-04-27 20:32:00) [31]> [0] skilful © (27.04.10 20:20)
> но в этом случае невозможно в edit вставлять значение из
> буфера обмена (по ctrl + v). Как это победить?
В OnKeyPress не все клавиши попадают.... Ctrl туда не попадает, а v ты запретил... + [1]
Lyonux (2010-04-27 20:23:00) [32]Вас не смущает тот факт, что по ctrl + v в едит может быть вставлено что угодно?)