Форум: "Основная";
Текущий архив: 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