Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];

Вниз

Смена активного поля.   Найти похожие ветки 

 
kronos   (2002-03-14 13:29) [0]

У меня в форме есть несколько полей типа TEdit. Подскажите, как сделать, чтобы по нажатию клавиши "Enter" курсор переходил из одного поля в другое? Заранее спасибо всем откликнувшимся.


 
Johnmen   (2002-03-14 13:34) [1]

Обрабатывай нажатие OnKeyDown .


 
mrcat   (2002-03-14 13:37) [2]

Для каждого события ONKEYUP можно написать код: if Key = 0013 then //здесь делаешь активным один из edit"ов
ActiveControl := Имя_следующего_едита


 
kronos   (2002-03-14 13:38) [3]

Уточняю вопрос: как заставить курсор перейти в нужное мне поле (программно)?


 
Johnmen   (2002-03-14 13:50) [4]

SetFocus


 
Song   (2002-03-14 13:51) [5]

Вот смотри, самый изящный пример, фокус скачет по 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;


 
kronos   (2002-03-14 14:21) [6]

При переходе в следующий Едит предыдущий очищается. Почему?


 
Song   (2002-03-14 14:25) [7]

А как ты переходишь? Приведи процедуру обработки нажатия.


 
Alx2   (2002-03-14 14:30) [8]

Вот пример, когда на стрелку вниз переходим на следующий 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;



 
Alx2   (2002-03-14 14:31) [9]

Сорри, не все вычистил. Вот так надо:

Procedure TMainForm.Edit1KeyDown(Sender: TObject; Var KEY: Word;
Shift: TShiftState);
Begin
Case KEY Of
VK_DOWN:
If GetKeyState(VK_CONTROL) >= 0 Then
SelectNext(ActiveControl, True, True);
VK_UP:
If GetKeyState(VK_CONTROL) >= 0 Then
SelectNext(ActiveControl, False, True);
End;
End;



 
kronos   (2002-03-14 14:54) [10]

to Song
>Для каждого события ONKEYUP можно написать код: if Key = 0013 >then //здесь делаешь активным один из edit"ов
>ActiveControl := Имя_следующего_едита
вот так и перехожу



 
kronos   (2002-03-14 14:57) [11]

Ой, глюк получился.

to Song
>Для каждого события ONKEYUP можно написать код: if Key = 0013
>then //здесь делаешь активным один из edit"ов
>ActiveControl := Имя_следующего_едита

вот так и перехожу


 
Song   (2002-03-14 15:04) [12]

Возможно у тебя очистка стоит на onEnter...


 
kronos   (2002-03-14 15:52) [13]

У меня глюк такой только в одном поле и на onEnter у меня ничего нет


 
kronos   (2002-03-14 15:54) [14]

также глючит и при Edit1.SetFocus


 
Malder   (2002-03-14 15:58) [15]

ничего глючить не должно... что-то у тебя написано видно...
посмотри обработчики событий на edit"е


 
Johnmen   (2002-03-14 15:59) [16]

1. Для начала переходи по OnKeyDown
2. >>>также глючит и при Edit1.SetFocus<<< а в чем же глюк ?


 
kronos   (2002-03-14 16:07) [17]

А, кстати, чем отличается ActiveControl от SetFocus?


 
kronos   (2002-03-14 16:28) [18]

Пропадает введенная инфо из поля


 
Johnmen   (2002-03-14 16:36) [19]

После чего пропадает то ?


 
kronos   (2002-03-14 16:48) [20]

procedure TForm4.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=0013 then Edit2.SetFocus;
end;

procedure TForm4.Edit1Change(Sender: TObject);
begin
form4.Edit2.Enabled:=true;
end;

Больше у меня на Едите ничего не висит


 
kronos   (2002-03-14 16:51) [21]

после нажатия Ентер для перехода в следующее поле


 
Johnmen   (2002-03-14 16:55) [22]

Как же трудно с тобой общаться !
Ты даже не хочешь перечитать, что тебе отвечали...
И зачем это form4.Edit2.Enabled:=true; ?



 
kronos   (2002-03-14 17:59) [23]

>И зачем это form4.Edit2.Enabled:=true; ?
А поле Edit2 должно быть недоступно,пока не заполнится Edit1


 
Johnmen   (2002-03-14 18:04) [24]

Ну так обрабатывай OnEnter на Edit2 и если поле 1 не заполнено, то SetFocus на него !


 
kronos   (2002-03-14 18:53) [25]

Какой павлин, какой мавлин ...

Я ввожу в поле Edit1 данные, нажимаю Ентер, данные из поля Edit1 пропадают, курсор перемещается в поле Edit2.

И еще. Может ли чистится поле из-за какой-то установки в Properties (не прятаться)?

В поле Edit1 у меня осталось

procedure TForm4.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=0013 then Edit2.SetFocus;
end;

В поле Edit2

procedure TForm4.Edit2Change(Sender: TObject);
begin
form4.Button1.Enabled:=true;
end;

procedure TForm4.Edit2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=0013 then Button1.SetFocus;
end;


 
Andreyka   (2002-03-14 22:09) [26]

Ставишь у формы KeyPreview = true и создаешь событие KeyPress следующего вида:


procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (Key = #13) then begin
Key:=#0;
Perform(WM_NEXTDLGCTL,0,0);
end;
end;


 
kronos   (2002-03-15 00:09) [27]

Попробую это уже завтра - все на работе.


 
kronos   (2002-03-15 13:00) [28]

>Perform(WM_NEXTDLGCTL,0,0)

что значит эта строка?



Страницы: 1 вся ветка

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

Наверх





Память: 0.5 MB
Время: 0.005 c
1-90850
Alibaba
2002-03-15 11:03
2002.03.28
TPageControl


4-91124
serg001
2002-01-29 13:17
2002.03.28
Как изменить текст кнопки постороннего окна, если я знаю его handle.


3-90783
Malder
2002-03-02 12:29
2002.03.28
Как создать триггер ?


4-91117
star
2002-01-28 12:23
2002.03.28
Кто-нибудь писал ловушки (hooks)? Подскажите ...


1-90979
Demon ltd
2002-03-14 23:09
2002.03.28
Разница между датами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский