Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.01;
Скачать: 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 вся ветка

Текущий архив: 2009.11.01;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
6-1209327530
HHNick
2008-04-28 00:18
2009.11.01
много поточность и IdHTTPServer (Indy)


2-1252866636
wah
2009-09-13 22:30
2009.11.01
Как записать из RichEdit в бинарный файл и потом прочитать


15-1251885076
boriskb
2009-09-02 13:51
2009.11.01
40 лет интернету


2-1253019089
Achpile
2009-09-15 16:51
2009.11.01
Диалоги


2-1253007705
Лёша
2009-09-15 13:41
2009.11.01
ini файл без секций.