Вниз
Скачать: CL | DM;

как узнать в событии OnExit новый активный объект   Найти похожие ветки 

← →
andreoman   (2008-09-24 12:26) [0]

Здавствуйте. Как узнать в событии OnExit объекта (ну скажем TEdit) какой объект/окно Формы/приложения
получает фокус ввода/становится активным.
Спасибо.


← →
Сергей М. ©   (2008-09-24 12:37) [1]

Любопытно, зачем это может понадобиться ?


← →
DimaBr ©   (2008-09-24 12:48) [2]

http://www.sql.ru/forum/actualthread.aspx?tid=598335


← →
Anatoly Podgoretsky ©   (2008-09-24 12:54) [3]

> andreoman  (24.09.2008 12:26:00)  [0]

Он еще не ушел


← →
Vlad Oshin ©   (2008-09-24 12:57) [4]

Сообщение WM_KILLFOCUS отправляется окну немедленно перед тем, как оно теряет фокус клавиатуры.

Синтаксис

WM_KILLFOCUS
hwndGetFocus = (HWND) wParam; // дескриптор окна, принимающего фокус

Параметры
hwndGetFocus
Значение wParam. Идентифицирует окно, которое принимает фокус клавиатуры (может быть значением ПУСТО (NULL)).


← →
Anatoly Podgoretsky ©   (2008-09-24 13:20) [5]

WM_KILLFOCUS не имеет отношения к OnExit, которые не WinAPI и работает иначе. Например подобное сообщение не будет сделано для многих случаев, например при переходе с TPanel в TGroupBox, в отличии от WM_KILLFOCUS, который является потерей фокуса, OnExit это переход на другой компонент в пределаз контейнера!!!

И сразу насчет ответа на другом форуме ActiveControl

> Note: In some control classes the ActiveControl property updates before the OnExit event occurs.

То есть на него тоже нельзя расчитывать.


← →
andreoman   (2008-09-24 13:27) [6]

вопрос тогда остаётся активным


← →
Сергей М. ©   (2008-09-24 13:29) [7]


> andreoman   (24.09.08 13:27) [6]


Так ты не удовлетворишь любопытство ?
Есть стойкое подозрение, что сквозная задача реализуется проще и изящней, нежели так как ты видишь ..


← →
Vlad Oshin ©   (2008-09-24 13:31) [8]


> WM_KILLFOCUS не имеет отношения к OnExit

кто утверждал обратное?


> вопрос тогда остаётся активным

в оконной функции ловить сообщение, взводить флаг, в onExit его проверять


← →
andreoman   (2008-09-24 13:38) [9]

У меня есть таблица cxGrid , а над ней TcxDBTextEdit, в которой я редактирую формулу (как в Excel) и при нажатии на Enter хочу вернуться в туже ячейку из которой перешол в TcxDBTextEdit.
procedure TfrmInkList.cxDBTextEdit1KeyPress(Sender: TObject; var Key: Char);
begin
 if ord(Key) = vk_Return then
 begin
   cxGrid1DBBandedTableView1.Controller.FocusedRecordIndex := var1;
   cxGrid1DBBandedTableView1.Controller.FocusedItemIndex   := var2;    
   cxGrid1DBBandedTableView1.Control.SetFocus;
   key := Chr(0);
 end;
end;

в переменных var1 и var2 я записываю значения строки и столбца, когда фокус переходит из таблицы в TcxDBTextEdit.
procedure TfrmInkList.cxGrid1Exit(Sender: TObject);
begin
  {Если фокус получает TcxDBTextEdit тогда}
  var1:=cxGrid1DBBandedTableView1.Controller.FocusedRecordIndex);
  var2:=cxGrid1DBBandedTableView1.Controller.FocusedColumnIndex);  
end;

скорее всего прейдется использовать cxDBTextEdit1.Focused


← →
Anatoly Podgoretsky ©   (2008-09-24 13:38) [10]

> andreoman  (24.09.2008 13:27:06)  [6]

Сообственно вряд ли есть хорошее решение, а остальное только суррогаты.


← →
Anatoly Podgoretsky ©   (2008-09-24 13:45) [11]

> andreoman  (24.09.2008 13:38:09)  [9]

Если у тебя в гриде вырабатывается OnExit то и запоминай характеристики, а знать куда будет переходить фокус совсем не требуется.
При обработке Enter в TcxDBTextEdit передавай фокус в запомненые координаты.
Дополнительный бонус, ты сможешь вернуться в теже координаты, даже если переход в TcxDBTextEdit будет не прямой.


← →
Vlad Oshin ©   (2008-09-24 14:02) [12]


> cxGrid



> Если у тебя в гриде вырабатывается OnExit то и запоминай
> характеристики

на самом деле..


← →
Anatoly Podgoretsky ©   (2008-09-24 15:00) [13]

> Vlad Oshin  (24.09.2008 14:02:12)  [12]

А все почему, вместо объяснения самой задачи, объясняют как неправильно делают.


← →
MsGuns ©   (2008-09-25 11:14) [14]

А отказаться от гридного редактирования Талмуд не дает ?


← →
ЮЮ ©   (2008-09-25 11:17) [15]

> [14] MsGuns ©   (25.09.08 11:14)
> А отказаться от гридного редактирования Талмуд не дает ?


Нет, Талмуд призывает отказываться от гридного редактирования :)



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.009 c
3-1229078488
Nik
2008-12-12 13:41
2009.11.01
отпределить тип колонки


4-1221223497
ganj
2008-09-12 16:44
2009.11.01
Скопировать выделенный текст а вктивном окне


15-1251649015
oldman
2009-08-30 20:16
2009.11.01
Москвичи, никто в Эльдорадо за дешевыми ноутами не ходил?


15-1251776745
VillVET
2009-09-01 07:45
2009.11.01
Экран приветствия


1-1222172199
zorik
2008-09-23 16:16
2009.11.01
Алгоритм наложения




   Наверх