Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Переход ;по Enter [D7, Win2k]


Страницы:   1 2

Explorer ©   (2003-01-23 08:41:00) 

Мастера!
Подскажите, как лучше сделать, Сабж, для элементов (Edit"s, ListBox) на форме?
Каждый раз обрабатывать нажатие Enter для всех элементов?


dolmat   (2003-01-29 12:09:00) [1]

извиняюсь за задержку.
Тат целая библиотека под названием EForumLib у меня только под D5


Orlan Master   (2003-01-28 13:13:00) [2]

Нижеприведенный пример описан у Марко Кэнту в "Delphi 4"
Вешается обработчик на контрол на свойство OnKeyPress.
Далее:

procedure TfrmCheck.OnKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
Perform(CM_DialogKey,VK_Tab,0);
end;
end;


Leonid_A   (2003-01-28 10:45:00) [3]

Для CBuilder:
1)Выставляешь Form->KeyPreview = true;

2)Пишешь обработчик события FormKeyUp формы. Например:

void __fastcall TBankAccountEdtFrm::FormKeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Shift.Contains(ssCtrl))
{
switch (Key)
{
case VK_RETURN:
Key = NULL;
BitBtnOK->Click();
break;
}
}
else
{
if (Key == VK_RETURN &&
BitBtnOK->Focused() == false &&
BitBtnCancel->Focused() == false &&
BitBtn3->Focused() == false &&
RxDBLookupCombo1->IsDropDown == false &&
RxDBLookupCombo2->IsDropDown == false &&
RxDBLookupCombo3->IsDropDown == false
)
{
Key = NULL;
Perform(WM_NEXTDLGCTL,0,0);
}
}
}


Explorer   (2003-01-28 10:28:00) [4]

>soware

да!!!!
Оказалось все дело в кнопке!
Спасибки!


soware   (2003-01-28 10:14:00) [5]

1) А у тебя для формы установлен KeyPreview ???
2) Нет ли у тебя кнопки с Default=True ???


makdi   (2003-01-28 10:13:00) [6]

А ты выставил у формы KeyPreview? Если нет, то понятно что оно работать не будет.


Explorer   (2003-01-28 10:12:00) [7]

Самое интересное, что программа ВООБЩЕ ни как не реагирует на нажатие Enter! Как будто она сделана на клаве для красоты...
На любую другую, она хоть заходит в процедуры и сравнивает... но не на Enter! :(
Хотя в других приложениях работает нормально.


jtiger   (2003-01-28 09:48:00) [8]

TO Gek

а зачем:
MF := TForm(GetParentForm( Self ));
ведь:
SendMessage( Self.Handle, WM_NEXTDLGCTL, 0, 0);
прекрасно работает.


Explorer   (2003-01-28 09:34:00) [9]

Не могу понять в чем дело! :(

>makdi
тоже не работает
меняю VK_Return на любой другой (VK_Down, VK_UP и даже на VK_SHIFT) все работает.


makdi   (2003-01-28 09:20:00) [10]

у меня работает такой код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_Return then begin
form1.SelectNext(form1.ActiveControl as TWinControl, true, true);
Key:=VK_OEM_CLEAR;
end;
end;


Explorer   (2003-01-28 09:07:00) [11]

Не хотит! :((
Пробовал пошаго пройти... но даже не срабатывает на Enter.
В чем еще может быть проблема?
Может дело в операционке (Win 2000 Advanced Server)? Хотя странно было бы...


gek   (2003-01-28 09:02:00) [12]

var
MF: TCustomForm;
begin
case Key of
VK_RETURN: begin
MF := TForm(GetParentForm( Self ));
if not(MF = nil )then SendMessage(MF.Handle, WM_NEXTDLGCTL, 0, 0);
end;
end; { case }

Ну если и так не работает...


Explorer   (2003-01-28 08:54:00) [13]

Вопрос понял правильно..

Но дело в том, что по нажитию клавиши Enter на компоненте... переход не осуществляется! :(

Если нажимаю, клавиши ВВЕРХ или ВНИЗ то переход работает.


Separator   (2003-01-28 08:53:00) [14]

Это как раз по Enter + Клавиши Up и Down


gek   (2003-01-28 08:49:00) [15]

А как ты думаешь клавиша Enter обозначается?
Я понял вопрос так, что нужен переход на следующий элемент формы


Explorer   (2003-01-28 08:42:00) [16]

>gek ©

Но это все же не по Enter переход.
Или я, что-то не понял?


gek   (2003-01-24 07:51:00) [17]


procedure TForm.EDITKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
VK_UP: SelectNext(Sender as TWinControl, false, true);
VK_RETURN,VK_DOWN: SelectNext(Sender as TWinControl, true, true);
end;
end;


Explorer   (2003-01-24 07:34:00) [18]

А больше, никто, ничего посоветовать не может?


Explorer   (2003-01-23 12:42:00) [19]

>dolmat ©

А как комнонента называется?


dolmat   (2003-01-23 09:50:00) [20]

извиняюсь www.devexpress.com


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо