Форум: "Основная";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];
Внизпроблема с переходом между DBEdit.... Найти похожие ветки
← →
BillyJeans (2002-04-19 14:38) [0]подскажите, как сделать, чтобы по клавише Enter фокус передавался в следующий DBEdit.
DBEdit"ы расположены на DBCtrlGrid...
← →
SB.John (2002-04-19 14:58) [1]Надо эти Edit"ы раположить по возрастанию TabOrder"ов . Точнее TabOrder"ы им поменять так, чтобы они шли по возрастанию. Ну и пишешь общий для всех Edit"ов обработчик OnKeyDown:
if Key = VK_RETURN then
FindNextControl(ActiveControl,True,True,True).SetFocus();
← →
Дмитрий Д. (2002-04-19 14:59) [2]в свойство онкейпрес:
if Key = #13 then
begin
SelectNext(Sender as TWinControl, True, True);
Key := #0;
end;
← →
BillyJeans (2002-04-22 17:04) [3]с TabOrder"ами все впорядке! Перепробовал оба примера и ничего!
После нажатия на Enter фокус передается DBCtrlGrid и все тут!!!
Подскажите еще что-нибудь...
← →
Игорь Шевченко (2002-04-22 17:17) [4]День добрый,
А убрать у DBGrid из Options dgTabs не пробовали ?
С уважением,
← →
Игорь Шевченко (2002-04-22 17:22) [5]Вдогонку:
Похоже, я притормозил насчет dgTabs :-(
Обработка события KeyDown на DBGrid не помогает ? Там ENTER несколько иначе отрабатывается...
С уважением,
← →
BillyJeans (2002-04-23 08:44) [6]... еще идеи будут?
← →
gek (2002-04-23 09:01) [7]Ничего там особенно не обрабатывается
procedure TForm_people.RxDBGrid_countryKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if key = VK_RETURN then SelectNext(Sender as TWinControl,true,true);
end;
И все работает
← →
BillyJeans (2002-04-23 10:01) [8]... ну и чего? фокус стоит как вкопаный на DBEdit1!!!
Повторяю, у меня DBEdit"ы расположены на DBCtrlGrid а не на DBGrid
Помогите pls...
← →
Игорь Шевченко (2002-04-23 10:07) [9]День добрый,
Вы поглядите
procedure TDBCtrlGrid.CMChildKey(var Message: TCMChildKey);
Там обрабатывается VK_TAB
По образу и подобию...
С уважением,
← →
Reals (2002-04-23 10:25) [10]Здравствуйте!
Вот еще одна идея, у меня работает:
В событие onKeyPress для всех Едитов написать следующее
if Key=#13 then Perform(WM_NEXTDLGCTL,0,0);
Но при этом нужно чтобы на формах стояли Properties - KeyPreview=False.
С Уважением!
← →
BillyJeans (2002-04-23 10:30) [11]а что за процедура такая CMChildKey? Что-то я не нашел такую...
← →
BillyJeans (2002-04-23 10:38) [12]Процедура Perform передает фокус от DBEdit1 к DBCtrlGrid и обратно :(
← →
gek (2002-04-23 10:46) [13]if key = VK_RETURN then
key:=VK_TAB
← →
ValVas (2002-04-23 10:48) [14]Можно выставить у формы KeyPreview=True и в ее обработчике искать все компоненты типа TDBEdit c TabOrder > текущего.
А вообще всех перечисленных способов обычно вполне достаточно, но загвоздка похоже в том, что используются DB контролы. Я могу предположить, что у каких-то полей набора данных уже реализованы обработчики, например, OnExit...
Проверь все.
← →
BillyJeans (2002-04-23 10:52) [15]Вся проблема в том, что OnKeyPress у DBEdit ни когда не вернет Key = #13 или VK_RETURN! Нажатие на Enter у него обрабатывается как-то по своему!
← →
gek (2002-04-23 10:59) [16]Не надо ерунды говорить
приведенный мной код нормально работает только сей проверил
procedure TForm1.DBCtrlGrid_exKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = VK_RETURN then key:=VK_TAB
end;
Только еще свяжи DBEdit1_exKeyDown с этим событием
Ну и конечно KeyPreview=true
← →
BillyJeans (2002-04-23 12:15) [17]Благодарю за внимание!!
Родилось у меня следующее:
procedure TForm1.DBCtrlGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (sender as tControl).Name <> "DBCtrlGrid1" then
Case key of
VK_RETURN : key := VK_TAB;
VK_UP : DBCtrlGrid1.DoKey(gkUp);
VK_DOWN : DBCtrlGrid1.DoKey(gkDown);
end;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c