Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.01;
Скачать: CL | DM;

Вниз

array of Timage   Найти похожие ветки 

 
webpauk   (2007-06-08 13:31) [0]

есть массив картинок.
надо:
1. отследить на какую кликнули - реализовано
2. отследить как кликнули (ShiftState) - выполнимо
3. Отледить если кликнули не на картинку (куда-угодно в пределах Parent-componenta) - неизвестно


 
webpauk   (2007-06-08 13:34) [1]

я так полагаю надо отловить какое-то сообщение типа WM_


 
Сергей М. ©   (2007-06-08 13:35) [2]


> куда-угодно в пределах Parent-componenta


Parent-компонент - это наследник TControl.
Любой наследник TControl возбуждает событие OnClick при клике на нем.

В чем же проблема ?


 
webpauk   (2007-06-08 13:36) [3]


> Сергей М. ©   (08.06.07 13:35) [2]

не хочется писать обработчик для каждого parenta Onclick
лучше было бы реализовать наследника Timage, который отслеживает Click вне пределов компонента


 
webpauk   (2007-06-08 13:37) [4]

не хочется писать обработчик Onclick для каждого parenta, так


 
Правильный Вася   (2007-06-08 13:44) [5]


> не хочется писать обработчик Onclick для каждого parenta

один на всех не подойдет?


 
webpauk   (2007-06-08 13:50) [6]

блин, хочется реализовать наследника Timage, который отслеживает Click вне пределов компонента


 
Сергей М. ©   (2007-06-08 13:58) [7]


> webpauk   (08.06.07 13:50) [6]


imho, блажь.

Уж если не нравится единый обработчик OnClick для всех контролов, то чем тогда не угодила обработка Application.OnMessage ? Через это событие проходит подавляющее большинство сообщений, в т.ч. мышиных ...


 
Правильный Вася   (2007-06-08 14:05) [8]


> webpauk   (08.06.07 13:50) [6]

а запуск северокорейских ракет он не должен отслеживать?


 
b z   (2007-06-08 14:19) [9]


> webpauk   (08.06.07 13:50) [6]

можно наверное через Parent.WindowProc


 
webpauk   (2007-06-08 14:32) [10]


> b z   (08.06.07 14:19) [9]

а какой message отлавливать?


 
b z   (2007-06-08 14:36) [11]


> webpauk   (08.06.07 14:32) [10]

ну это по обстоятельствам, я ж не знаю что у вас там происходит
к примеру WM_LBUTTONDOWN


 
clickmaker ©   (2007-06-08 14:46) [12]


> хочется реализовать наследника Timage, который отслеживает
> Click вне пределов компонента

а что он при этом должен делать?


 
webpauk   (2007-06-08 15:12) [13]


> b z   (08.06.07 14:36) [11]

нужно отловить WM_LBUTTONDOWN ВНЕ компонента!!!


 
homm ©   (2007-06-08 15:15) [14]

> нужно отловить WM_LBUTTONDOWN ВНЕ компонента!!!

Тебе уже как минимум 2 способа сказали.

См. [9], [7];


 
webpauk   (2007-06-08 15:18) [15]


> homm ©   (08.06.07 15:15) [14]

я согласен на Parent.WindowProc
какой месс ловить для click вне компонента


 
webpauk   (2007-06-08 15:20) [16]

упс...
извиняюсь
WM_LBUTTONDOWN и надоть ловить


 
b z   (2007-06-08 15:32) [17]


> извиняюсь

ну хорошо хоть так :)


 
webpauk   (2007-06-08 15:37) [18]

извиняюсь за тупость, нада помощ:

TImageEx = class(TImage)
...
protected
  procedure  NewParentWndPrc(var  Msg: TMessage);
end;

var
  OldParentWndPrc: TWndMethod;

constructor TImageEx.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 OldParentWndPrc:=TWinControl(AOwner).WindowProc;
 TWinControl(AOwner).WindowProc:=NewParentWndPrc;  
end;

procedure TImageEx.NewParentWndPrc(var  Msg: TMessage);
begin
 case msg.Msg of WM_LBUTTONDOWN: DoSomthing;
 end;
 OldParentWndPrc(Msg); - ???
end;


здесь происходит stackoverflow
как правильно?


 
webpauk   (2007-06-08 15:42) [19]

дополнение: есть array of TimageEx
и соответс при каждом создании TimageEx - происходит
OldParentWndPrc:=TWinControl(AOwner).WindowProc;
TWinControl(AOwner).WindowProc:=NewParentWndPrc;

может в консерватории что-то поменять?


 
clickmaker ©   (2007-06-08 15:47) [20]

а что, кроме имиджей и формы ничего нет? то есть юзер обречен щелкнуть либо по имиджу, либо по форме без вариантов?


 
webpauk   (2007-06-08 15:53) [21]

есть
но! ловить click надо только в пределах parent component
собственно говоря, засунул array в class, а уже классу присобачил Parent.WindowProc

единств. вопрос остался:
состояние shift и ctrl какими константами определяется?
эмпирически Msg.wparam=5(9)
а как правильнее записать эти 5 и 9?


 
b z   (2007-06-08 16:12) [22]


> OldParentWndPrc:=TWinControl(AOwner).WindowProc;

TImageEx.Create(nil);

> состояние shift и ctrl какими константами определяется?

смотрите в недрах vcl (units: Windows, Messages)


 
webpauk   (2007-06-08 16:14) [23]


> b z   (08.06.07 16:12) [22]

гы...
я хотел по простому
от вас узнать-с


 
b z   (2007-06-08 16:21) [24]


> от вас узнать-с

а программу не написать за вас? ;)


 
webpauk   (2007-06-08 16:49) [25]


> b z   (08.06.07 16:21) [24]

гы...
неа
мне самому по приколу



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

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

Наверх




Память: 0.52 MB
Время: 0.019 c
15-1180784583
Zeqfreed
2007-06-02 15:43
2007.07.01
Magic 8-ball


1-1177676693
Ford
2007-04-27 16:24
2007.07.01
Смена раскладки клавиатуре в системе


4-1169411191
Vect1on
2007-01-21 23:26
2007.07.01
Работа с ресурсами


6-1165408740
Квэнди
2006-12-06 15:39
2007.07.01
IDTCPServer и Ip адрес клиента


15-1180977634
Kolan
2007-06-04 21:20
2007.07.01
Как подключить редактор форм в eclipse?