![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Смена активного поля.
kronos © (2002-03-14 13:29:00)У меня в форме есть несколько полей типа TEdit. Подскажите, как сделать, чтобы по нажатию клавиши "Enter" курсор переходил из одного поля в другое? Заранее спасибо всем откликнувшимся.
Alx2 (2002-03-14 14:30:00) [21]Вот пример, когда на стрелку вниз переходим на следующий control, а на стрелку вверх - на предыдущий.
Procedure TMainForm.Edit1KeyDown(Sender: TObject; Var KEY: Word;
Shift: TShiftState);
Begin
Case KEY Of
VK_DOWN:
CreateDate.SetFocus Else
If GetKeyState(VK_CONTROL) >= 0 Then
SelectNext(ActiveControl, True, True);
VK_UP:
If GetKeyState(VK_CONTROL) >= 0 Then
SelectNext(ActiveControl, False, True);
End;
End;
Song (2002-03-14 14:25:00) [22]А как ты переходишь? Приведи процедуру обработки нажатия.
kronos (2002-03-14 14:21:00) [23]При переходе в следующий Едит предыдущий очищается. Почему?
Song (2002-03-14 13:51:00) [24]Вот смотри, самый изящный пример, фокус скачет по edit"ам последовательно:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
Var C:TWinControl;
begin
C:=FindNextControl(TEdit(Sender),True,True,True);
IF C is TEdit then C.SetFocus;
end;
Не забудь поставить эту процедуру для всех TEdit в качестве onKeyDown
А по поводу твоего уточнения, дык это просто:
Edit1.SetFocus;
Edit2.SetFocus;
...
Edit n.SetFocus;
Johnmen (2002-03-14 13:50:00) [25]SetFocus
kronos (2002-03-14 13:38:00) [26]Уточняю вопрос: как заставить курсор перейти в нужное мне поле (программно)?
mrcat (2002-03-14 13:37:00) [27]Для каждого события ONKEYUP можно написать код: if Key = 0013 then //здесь делаешь активным один из edit"ов
ActiveControl := Имя_следующего_едита
Johnmen (2002-03-14 13:34:00) [28]Обрабатывай нажатие OnKeyDown .