Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать у кого был фокус 
:(
    Опции темы
ShadeSt
Дата 9.8.2005, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 9.8.2005
Где: Россия, г. Ставро поль

Репутация: нет
Всего: 7



На форме есть несколько TEdit'ов, в какой-то момент времени один из них получает фокус, можно ли узнать какой компонент на форме был активным до него?
Можно в событии OnExit запоминать Sender'а, а есть ли какой нибудь другой способ??



--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
AntonSaburov
Дата 9.8.2005, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Посмотри свойство ActiveControl - и тебе будет счастье.
PM MAIL WWW ICQ   Вверх
ShadeSt
Дата 9.8.2005, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 9.8.2005
Где: Россия, г. Ставро поль

Репутация: нет
Всего: 7



ActiveControl - содержит элемент, который в данный момент имеет фокус. А мне хотелось бы узнать у кого был фокус до него.
т.е. например. на форме два edit'a один из них активен, нажимаем таб, переходим в следующий (например в editNN), в событии OnEnter ( editNNEnter(Sender...) ) хотелось бы знать от кого пришел фокус.


--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
Snowy
Дата 9.8.2005, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Для этого заведи себе глобальную переменную - указатель.
А в OnEnter и проверяй.
Если он nil, значит первый.
Если нет, то имеешь указатель.
После этого сразу присваивай указателю себя.

Это сообщение отредактировал(а) Snowy - 9.8.2005, 15:11
PM MAIL   Вверх
Girder
Дата 9.8.2005, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 31
Всего: 155



WM_SETFOCUS


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
ShadeSt
Дата 9.8.2005, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 9.8.2005
Где: Россия, г. Ставро поль

Репутация: нет
Всего: 7



В том то и дело что сейчас так и работает, просто почему-то кажется что это неправильно как-то и хотелось узнать есть ли др. способы.


--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
Snowy
Дата 9.8.2005, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(ShadeSt @ 9.8.2005, 15:18)
В том то и дело что сейчас так и работает, просто почему-то кажется что это неправильно как-то и хотелось узнать есть ли др. способы.

Другие способы есть, но, думаю, этот самый логичный.
Если только ты не делаешь отдельный OnEnter для каждого едита.
PM MAIL   Вверх
ShadeSt
Дата 9.8.2005, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 9.8.2005
Где: Россия, г. Ставро поль

Репутация: нет
Всего: 7



Для всех Edit'ов один обработчик. А другие способы это только сообщениями windows?


--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
Snowy
Дата 9.8.2005, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Вот способ еще проще:
На OnExit можно узнать:
Form.ActiveControl - контрол, который стал активен.
Sender - контрол, который был активен до этого.

Это сообщение отредактировал(а) Snowy - 9.8.2005, 15:59
PM MAIL   Вверх
Song
Дата 9.8.2005, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Код
FindNextControl(ActiveControl,False,True,False);



--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
p0s0l
Дата 9.8.2005, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Song, фокус передаваться может не только по порядку TabOrder-ов... Например, если щелкнули мышкой по какому-либо контролу...



--------------------
С уважением, г-н Посол.
PM   Вверх
Song
Дата 9.8.2005, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



:yes:

Тогда только запоминать предыдущий TWinControl


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Romikgy
Дата 10.8.2005, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



WM_ACTIVATE
fActive = LOWORD(wParam); // activation flag
fMinimized = (BOOL) HIWORD(wParam); // minimized flag
hwndPrevious = (HWND) lParam; // window handle

hwndPrevious

Value of lParam. Identifies the window being activated or deactivated, depending on the value of the fActive parameter. If the value of fActive is WA_INACTIVE, hwndPrevious is the handle of the window being activated. If the value of fActive is WA_ACTIVE or WA_CLICKACTIVE, hwndPrevious is the handle of the window being deactivated. This handle can be NULL.

Кажется это должно те подойти smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 10.8.2005, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Romikgy @ 10.8.2005, 09:57)
WM_ACTIVATE

А это здесь причем?
Здесь вот:
Цитата(Girder @ 9.8.2005, 15:18)
WM_SETFOCUS

Цитата(Romikgy @ 10.8.2005, 09:57)
Кажется это должно те подойти

Нет.


Это сообщение отредактировал(а) Snowy - 10.8.2005, 10:12
PM MAIL   Вверх
Romikgy
Дата 10.8.2005, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



А разве при получении фокуса окно не становиться активным?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 10.8.2005, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Romikgy @ 10.8.2005, 10:07)
А разве при получении фокуса окно не становиться активным?

Окно да. Но речь о Едитах.
PM MAIL   Вверх
Romikgy
Дата 10.8.2005, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Snowy @ 9.8.2005, 15:10)
Для этого заведи себе глобальную переменную - указатель.
А в OnEnter и проверяй.
Если он nil, значит первый.
Если нет, то имеешь указатель.
После этого сразу присваивай указателю себя.

Можно делать тоже только перехватывая wm_setfocus smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Snowy
Дата 10.8.2005, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Romikgy @ 10.8.2005, 11:10)
Можно делать тоже только перехватывая wm_setfocus

Можно. Как вариант...
Однако с запоминанием более просто.
К тому же без запоминания мы не узнаем какой был последний едит, если фокус был передан не едиту.
Пример:
Фокус на едит1.
Перешли на едит2 - был едит1
Перешли на Едит4 - был едит2
Перешли на Мемо1
Перешли на Едит3 - был едит4.
Вот тут без запоминания едит3 никогда не узнает, что до него был едит4
PM MAIL   Вверх
ShadeSt
Дата 10.8.2005, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 9.8.2005
Где: Россия, г. Ставро поль

Репутация: нет
Всего: 7



Всем спасибо. Буду запоминать у кого был фокус и не заморачиваться.


--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
Romikgy
Дата 10.8.2005, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Snowy @ 10.8.2005, 10:13)
Окно да. Но речь о Едитах.

Я могу и ошибатся, но насколько я знаю , либой контрол является окном smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Song
Дата 11.8.2005, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Смотря что понимать под словом "контрол".


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Rennigth
Дата 11.8.2005, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



Romikgy
тотже TLabel не окно.


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Romikgy
Дата 11.8.2005, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Song @ 11.8.2005, 09:04)
Смотря что понимать под словом "контрол".

Уточняю все классы типа TWinControl smile
Добавлено @ 16:24
Цитата(Rennigth @ 11.8.2005, 09:09)
тотже TLabel не окно.

Да это не окно , это картинка /производная от класс TGraphicControl = class(TControl)
/, а спрашивали про эдит smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Song
Дата 11.8.2005, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Ну я под контролами например понимаю любой элемент интерфейса. Так что...
Добавлено @ 16:28
в котором что-то вводится или выводится


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Romikgy
Дата 12.8.2005, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Song @ 11.8.2005, 16:28)
Ну я под контролами например понимаю любой элемент интерфейса. Так что...
Добавлено @ 16:28
в котором что-то вводится или выводится

Софистикой будем заниматся smile
Или тему обсуждать ? smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Song
Дата 12.8.2005, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Я имел ввиду, что нет никакого исключающего правила на слово "контрол", поэтому говорить
Цитата(Romikgy @ 10.8.2005, 17:26)
либой контрол является окном

по меньшей мере неправильно. Или добавить "в моём понимании".


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Romikgy
Дата 12.8.2005, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Извени , забыл добавить
Цитата(Song @ 12.8.2005, 11:23)
"в моём понимании".

smile



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1165 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.