Текущий архив: 2006.05.14;
Скачать: CL | DM;
Вниз
Перехват ввода с клавиатуры Найти похожие ветки
← →
kyn66 © (2006-04-05 13:28) [0]Уважаемые мастера, на форме есть DBGrid, и Edit1. В поле Edit1 воодится текст, ля поиска по таблице, выводимой в DBGrid. Как мне сразу-же пернапрвить ввод в Edit1, если в данный момент активен DBGrid. Делая так:
procedure TMainFrm.DBGridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
FindEdit.SetFocus;
end;
вокус меняется, но съедается первая буква. Как правильно отловить ввод с клавиатуры, чтобы слово для поиска появлялось правильно???
← →
Сергей М. © (2006-04-05 13:36) [1]
> съедается первая буква
Где, кем "съедается" ?
Клавишу при этом какую тычешь ?
← →
Юрий Иванов (2006-04-05 14:12) [2]PostMessage(FindEdit.Handle, WM_KeyDown, Key, 0); {послать букву в FindEdit}
Key:=0; {чтобы не обрабатывался Key в текущем обработчике}
ActiveControl:=Edit1; {или SetFocus как было}
← →
kyn66 © (2006-04-05 14:24) [3]> Сергей М.
Клавишу тыкаю любую, всмысле "буквенную". Получается, что припервом тыке обрабатывается событие и переводит фокус в Edit1, а потом уже со второй в Edit1 идет нориальный ввод.
> Юрий Иванов
На какое событие вешать? onKeyDown Grida?
← →
kyn66 © (2006-04-05 14:31) [4]> Юрий Иванов
Все, проверил, работает как и нужно было, спасибо! Но сейчас хочу усилить проверку и при последующем вводе в FindEdit проверять раскладку клавы. Т.е. если ангельская - выдать предупреждение.
procedure TMainFrm.FindEditKeyPress(Sender: TObject; var Key: Char);
begin
if Key in(["a".."Z", "A".."Z"]) then
begin
ShowMessage("Перключитесь");
end;
end;
Но здесь опять засада... Пошагово проверяю Key. К примеру ввожу f... Вижу Key= "f", но мессага не появляется. Почему?
← →
Сергей М. © (2006-04-05 14:45) [5]
> kyn66 © (05.04.06 14:24) [3]
При любом "тыке" код введенной клавиши обрабатывается текущим контролом, т.е. контролом имеющим фокус, т.е. гридом.
← →
kyn66 © (2006-04-05 14:54) [6]Да, но в данном случае уже FindEdit активен и точка останова еменно на его событии срабатывает
← →
Юрий Иванов (2006-04-05 18:33) [7]Вообще говоря, просить пользователя переключить раскладку клавиатуры не совсем правильно.
Если это нужно, то лучше принудительно установить правильную раскладку. Сделать это надо не в OnKeyPress (там уже поздно), а, скажем, в OnEnter для FindEdit, чтобы при входе в это поле всегда стоял "русский".
Собственно что делать см. в
_http_://delphiworld.narod.ru/base/switch_spreading_of_keyboard.html
Страницы: 1 вся ветка
Текущий архив: 2006.05.14;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.022 c