Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2003.02.06;
Скачать: [xml.tar.bz2];




Вниз

Переход по Enter 


Explorer   (2003-01-23 08:41) [0]

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



dolmat   (2003-01-23 09:37) [1]

В кладовке по моему что-то было

или если нет то www.qrsoft.com (если мне память не изменяет) там необходимо зарегистрироваться на их форум, а они на e-mail сбросят письмо с паролями free libraru и ссылочками.



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

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



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

>dolmat ©

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



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

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



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


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-28 08:42) [6]

>gek ©

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



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

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



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

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



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

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

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

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



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

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 09:07) [11]

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



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

у меня работает такой код:
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:34) [13]

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

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



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

TO Gek

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



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

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



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

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



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

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



Explorer   (2003-01-28 10:28) [18]

>soware

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



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

Для 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);
}
}
}



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

Нижеприведенный пример описан у Марко Кэнту в "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;



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

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




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2003.02.06;
Скачать: [xml.tar.bz2];




Наверх






Память: 0.77 MB
Время: 0.671 c
3-15436           PONTIY                2003-01-21 13:23  2003.02.06  
Неработает ADOTable.InsertRecord(


14-15905          Programist21          2003-01-08 09:26  2003.02.06  
Файл или БД


3-15477           Shadow                2003-01-19 17:09  2003.02.06  
Проблема со сложныи индексами


1-15699           LEXA                  2003-01-25 14:28  2003.02.06  
TList и память


3-15419           BubbleGum             2003-01-22 08:45  2003.02.06  
Отличие программного импорта от ручного ...