Вниз
Скачать: CL | DM;

проблема с переходом между 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.008 c
1-17522
Санёк
2002-04-23 17:26
2002.05.06
Куда то пропал мой вопрос....


1-17537
Miwa
2002-04-19 11:01
2002.05.06
Степень в Паскале.


4-17751
Song
2002-03-04 18:07
2002.05.06
Как в чужом окне программно нажать Ctrl+C???


4-17737
Витамин
2002-03-02 18:25
2002.05.06
Что здесь неправильно?


1-17625
ymin
2002-04-23 09:16
2002.05.06
Form4:=Tform3.create(self);




   Наверх