![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
ShadeSt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 9.8.2005 Где: Россия, г. Ставро поль Репутация: нет Всего: 7 |
На форме есть несколько TEdit'ов, в какой-то момент времени один из них получает фокус, можно ли узнать какой компонент на форме был активным до него?
Можно в событии OnExit запоминать Sender'а, а есть ли какой нибудь другой способ?? -------------------- It's nice to be importand, but it's more importand to be nice © Scooter |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Посмотри свойство ActiveControl - и тебе будет счастье.
|
|||
|
||||
ShadeSt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Для этого заведи себе глобальную переменную - указатель.
А в OnEnter и проверяй. Если он nil, значит первый. Если нет, то имеешь указатель. После этого сразу присваивай указателю себя. Это сообщение отредактировал(а) Snowy - 9.8.2005, 15:11 |
|||
|
||||
Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
WM_SETFOCUS
-------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
ShadeSt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 9.8.2005 Где: Россия, г. Ставро поль Репутация: нет Всего: 7 |
В том то и дело что сейчас так и работает, просто почему-то кажется что это неправильно как-то и хотелось узнать есть ли др. способы.
-------------------- It's nice to be importand, but it's more importand to be nice © Scooter |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Другие способы есть, но, думаю, этот самый логичный. Если только ты не делаешь отдельный OnEnter для каждого едита. |
|||
|
||||
ShadeSt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 9.8.2005 Где: Россия, г. Ставро поль Репутация: нет Всего: 7 |
Для всех Edit'ов один обработчик. А другие способы это только сообщениями windows?
-------------------- It's nice to be importand, but it's more importand to be nice © Scooter |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Вот способ еще проще:
На OnExit можно узнать: Form.ActiveControl - контрол, который стал активен. Sender - контрол, который был активен до этого. Это сообщение отредактировал(а) Snowy - 9.8.2005, 15:59 |
|||
|
||||
Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
-------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Song, фокус передаваться может не только по порядку TabOrder-ов... Например, если щелкнули мышкой по какому-либо контролу...
-------------------- С уважением, г-н Посол. |
|||
|
||||
Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
:yes:
Тогда только запоминать предыдущий TWinControl -------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 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. Кажется это должно те подойти ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Snowy |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
А это здесь причем? Здесь вот:
Нет. Это сообщение отредактировал(а) Snowy - 10.8.2005, 10:12 |
||||||
|
|||||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
А разве при получении фокуса окно не становиться активным?
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Окно да. Но речь о Едитах. |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Можно делать тоже только перехватывая wm_setfocus ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Можно. Как вариант... Однако с запоминанием более просто. К тому же без запоминания мы не узнаем какой был последний едит, если фокус был передан не едиту. Пример: Фокус на едит1. Перешли на едит2 - был едит1 Перешли на Едит4 - был едит2 Перешли на Мемо1 Перешли на Едит3 - был едит4. Вот тут без запоминания едит3 никогда не узнает, что до него был едит4 |
|||
|
||||
ShadeSt |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 9.8.2005 Где: Россия, г. Ставро поль Репутация: нет Всего: 7 |
Всем спасибо. Буду запоминать у кого был фокус и не заморачиваться.
-------------------- It's nice to be importand, but it's more importand to be nice © Scooter |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Я могу и ошибатся, но насколько я знаю , либой контрол является окном ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
Смотря что понимать под словом "контрол".
-------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
Romikgy
тотже TLabel не окно. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Уточняю все классы типа TWinControl ![]() Добавлено @ 16:24
Да это не окно , это картинка /производная от класс TGraphicControl = class(TControl) /, а спрашивали про эдит ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
||||
|
|||||
Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
Ну я под контролами например понимаю любой элемент интерфейса. Так что...
Добавлено @ 16:28 в котором что-то вводится или выводится -------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Софистикой будем заниматся ![]() Или тему обсуждать ? ![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
Я имел ввиду, что нет никакого исключающего правила на слово "контрол", поэтому говорить
по меньшей мере неправильно. Или добавить "в моём понимании". -------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Извени , забыл добавить
![]() -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |