Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2009, 20:29   #1
El Fierro
 
Регистрация: 14.12.2008
Сообщений: 6
По умолчанию Наличие указателя в объекте Edit

Здравствуйте! Ищу ответ на следующий вопрос. На форме есть 2 Edit'а. Нужно осуществлять ввод в тот из них, в котором стоит указатель. Какой параметр (функция и т.п.) отвечает за определение наличия в поле указателя? Можно ли его использовать, например, для передачи указателя в другое поле Edit?
El Fierro вне форума Ответить с цитированием
Старый 14.03.2009, 20:37   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Что вы имеете в виду под "указателем"? Текстовый курсор, или курсор мыши, и что-то свое?
mihali4 вне форума Ответить с цитированием
Старый 14.03.2009, 20:40   #3
El Fierro
 
Регистрация: 14.12.2008
Сообщений: 6
По умолчанию

Я имею ввиду текстовый курсор. То есть ввод должен осуществляться в то поле, в котором этот курсор стоит. Также надо обеспечить возможность "перетаскивания" курсора в другое поле Edit по нажатию Enter.
El Fierro вне форума Ответить с цитированием
Старый 14.03.2009, 20:41   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я думаю ты имел ввиду наличие фокуса в Эдите
тогда используй функцию Эдита TEdit.focused
например:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if Edit1.Focused=true  
  then Edit1.text:=Edit1.Text+'1' 
  else Edit2.Text:=Edit2.Text+'2'
end;
Цитата:
Также надо обеспечить возможность "перетаскивания" курсора в другое поле Edit по нажатию Enter.
Код:
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
 if Key=#13 then Edit1.SetFocus;
end;
по нажатию Enter во втором Эдите фокус переходит в первый
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 14.03.2009 в 20:48. Причина: решил уточнить
Пепел Феникса вне форума Ответить с цитированием
Старый 14.03.2009, 20:45   #5
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Так как Edit является однострочным текстовым редактором, то так называемым "указателем" в нем служит текстовый курсор.По умолчанию (если программно не предопределено заранее) курсор находится в том компоненте, который раньше был введен на этапе конструирования формы.Переопределить курсор, а значит фокус ввода (SetFocus) можно программно :
Код:
Edit2.SetFocus;
Клавишей ТАВ фокус передается поочередно по компонентам, опять же в порядке их ввода на форму.
Цитата:
перетаскивания" курсора в другое поле Edit по нажатию Enter.
Пишешь обработчик клавиши Enter ( код - 13):
Код:
if Key = 13 then  <компонент> SetFocus;
И не сомневайся даже ... отдых - кайф, работа - лажа!

Последний раз редактировалось DeKot; 14.03.2009 в 20:49.
DeKot вне форума Ответить с цитированием
Старый 14.03.2009, 20:46   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от El Fierro Посмотреть сообщение
Я имею ввиду текстовый курсор. То есть ввод должен осуществляться в то поле, в котором этот курсор стоит. Также надо обеспечить возможность "перетаскивания" курсора в другое поле Edit по нажатию Enter.
Для первого - нужно любым способом просто передать фокус нужному эдиту, либо вручную, например, мышкой, либо программно, например:
Код:
Edit136.SetFocus;
Для второго нужно обрабатывать событие OnKeyDown, например:
Код:
procedure TForm1.Edit136KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=VK_RETURN then
Edit243.SetFocus;
end;
и тогда последующий ввод пойдет в Edit243...
mihali4 вне форума Ответить с цитированием
Старый 14.03.2009, 21:01   #7
El Fierro
 
Регистрация: 14.12.2008
Сообщений: 6
По умолчанию

Спасибо. С этой частью программы справился. Но появился ещё один вопрос по теме: в приложении есть кнопки, по нажатию на которые в Edit осуществляется ввод соответствующего символа. Однако при нажатии на кнопку фокус смещается на нее, и ввод не осуществляется. Как обойти это?
El Fierro вне форума Ответить с цитированием
Старый 14.03.2009, 21:10   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Введите глобальную переменную TObject, например LASTEDITFOCUSED, куда будет заноситься объект эдит, последним получивший фокус.
Тогда вам будет однозначно известно, куда отправлять символ...
mihali4 вне форума Ответить с цитированием
Старый 14.03.2009, 21:15   #9
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Опять же в обработчике нажатия кнопки указать перевод фокуса :
Код:
procedure TForm1.Button1Click (Sender: TObject);
begin
  //  обработка кнопки ;
  Edit1.Text:= 'Перевожу сюда фокус' ;
  Edit1.SetFocus;
end;
В результате в Edit1 появится текст "Перевожу сюда фокус" и текстовый курсор также окажется в Edit1.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 14.03.2009, 21:28   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от DeKot Посмотреть сообщение
Опять же в обработчике нажатия кнопки указать перевод фокуса...
Там несколько эдитов. Который из них прописывать в обработчике? Где вы определяете тот эдит, в который нужно ввести символ?
Код:
(LASTEDITFOCUSED as TEdit).SetFocus;

Последний раз редактировалось mihali4; 14.03.2009 в 21:47.
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переопределение события OnClick в динамическом объекте-компоненте CyberJohn Общие вопросы Delphi 8 06.01.2010 15:56
передача указателя в функцию arturka Помощь студентам 3 06.07.2008 00:25
Координаты указателя мыши Артэс Win Api 9 15.06.2008 16:20
Можно ли сделать счётчик в объекте document?? fclmhooligan JavaScript, Ajax 2 17.02.2008 22:08
не сортируются данные в объекте TDBQLocateGrid unwanted БД в Delphi 2 26.07.2007 13:32