Форум: "Основная";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];
ВнизКак определили, что щелкнули мышкой не по моему компоненту? Найти похожие ветки
← →
avr555 (2002-07-08 18:11) [0]У меня есть компонент и мне нужно определить, что с ним закончили работать.
Т.е. щелкнули куда-то в другое место.
OnExit не подходит, т.к оно не срабатывает при щелчке, допустим, на панели.
Что мне делать?
← →
Skier (2002-07-08 18:14) [1]>avr555
WM_CANCELMODE ?
← →
avr555 (2002-07-08 18:25) [2]Может я что-то неправильно делаю?
type
TTest1 = class(TVirtualStringTree)
procedure Test(var Mess : TMessage); message WM_CANCELMODE;
end;
.....
procedure TTest1.Test(var Mess: TMessage);
begin
MessageDlg("Lost Focusssssss!!!!", mtWarning, [mbOK], 0);
end;
И ничего не происходит :(
← →
Skier (2002-07-08 18:31) [3]>avr555
Используй СM_CANCELMODE (ошибка вышла :) )
procedure TTest1.CMCancelMode(var Msg: TCMCancelMode);
begin
inherited;
if Msg.Sender <> Self then begin
MessageDlg("Lost Focusssssss!!!!", mtWarning, [mbOK], 0);
end; //if
end;
← →
avr555 (2002-07-08 18:50) [4]Спасибо, вроде работает.
← →
MsGuns (2002-07-08 20:50) [5]А нельзя просто OnExit ?
← →
avr555 (2002-07-09 17:03) [6]
> MsGuns © (08.07.02 20:50)
OnExit срабатывает только если мы переходим напримир с одного TEdit в другой TEdit. А если во время редактирования щелкнуть по панели, то такое событие не происходит.
> Skier © (08.07.02 18:31)
После тщательного тестирования выяснилось, что это срабатывает только если кликать на одного из парентов. В другом случае это не срабатывает.
← →
Skier (2002-07-09 17:14) [7]>avr555
А ты с SetCapture и ReleaseCapture не игрался ?
← →
avr555 (2002-07-09 17:57) [8]Вообще у меня в компоненте это используется.
А как это влияет?
← →
Skier (2002-07-09 18:15) [9]>avr555
Это может влиять (хотя не факт).
В общем, умозрительно трудно что-нибудь сказать определённо .
Есть ещё сообщение WM_ACTIVATE может тебе через него попытаться...
← →
avr555 (2002-07-09 18:28) [10]Я так понял это сообщение передается окнам которые активизируются и деактивизируются?
← →
Fiend (2002-07-09 18:34) [11]А можно тогда с другой стороны подойти??
А что должно случиться с вашим компонентом, когда юзер кликнул на другом, но фокус всё же ваш компонент не потерял
← →
Skier (2002-07-09 18:39) [12]>avr555
Я думаю что оно будет приходить и к оконным компонентам (потомки TWinControl), только видимо опять нужно использовать
СM_ACTIVATE
← →
avr555 (2002-07-09 19:11) [13]>Skier
Сделал по оаналогии с СM_CANCELMODE - никакой реакции.
>Fiend
Я работаю с компонентом TVirtualStringTree.
Начинаю редактировать ячейку и мне нужно определить, когда нужно принудительно закончить редактирование. Сам компонент заканчивает редактирование только при потере фокуса, а мне нужно, чтоб при нажатии на что угодно заканчивалось редактирование (в основном проблема с кнопками).
← →
Skier (2002-07-09 19:17) [14]>avr555
Так ты объяснил Fiend, то - СM_CANCELMODE это то что тебе
нужно !
А вообще высылай мне свой код (вместе с TVirtualStringTree) и объясни что требуется. Завтра с утра может быть покопаюсь...
← →
TTCustomDelphiMaster (2002-07-09 21:11) [15]Вообще нужно ловить кучу событый от мышки. Для этого размести на форме TApplicationEvents и напиши примерно следующее
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if Msg.message = WM_LBUTTONDOWN then
begin
нажали ЛКМ в одном из окон твоего приложения
по координатам или еще как нибудь попытайся определить есть ли на этом месте твой компонент
end;
if Msg.message = WM_MBUTTONDOWN then
begin
тоже для СКМ
end;
if Msg.message = WM_RBUTTONDOWN then
begin
тоже для ПКМ
end;
if Msg.message = WM_NCLBUTTONDOWN then
begin
нажали ЛКМ в одном из окон твоего приложения в неклиентской области (на заголовке, границах формы) и соответственно не на твоем компоненте
end;
обработай также WM_NCMBUTTONDOWN и WM_NCRBUTTONDOWN
end;
procedure TForm1.ApplicationEvents1Deactivate(Sender: TObject);
begin
Это событие происходит при деактивации приложения, т.е. нажали кнопку не в твоем приложении.
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c