Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2009.11.01;
Скачать: [xml.tar.bz2];

Вниз

как узнать в событии 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.005 c
15-1251738482
Pavia
2009-08-31 21:08
2009.11.01
Изменения правил Русского языка.


15-1252153748
KilkennyCat
2009-09-05 16:29
2009.11.01
Неплохой ролик на тему запрета скайпа и ваще.


15-1251846861
TIF
2009-09-02 03:14
2009.11.01
Главный сайт страны обновился


15-1252316879
Achpile
2009-09-07 13:47
2009.11.01
PHP


4-1220776855
Дмитрий Белькевич
2008-09-07 12:40
2009.11.01
Количество записанных байт на жесикий





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский