![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Переход ;по Enter [D7, Win2k]
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