![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
array of Timage [D6, WinXP]
webpauk © (2007-06-08 13:31:00)есть массив картинок.
надо:
1. отследить на какую кликнули - реализовано
2. отследить как кликнули (ShiftState) - выполнимо
3. Отледить если кликнули не на картинку (куда-угодно в пределах Parent-componenta) - неизвестно
webpauk (2007-06-08 16:49:00) [1]
> b z (08.06.07 16:21) [24]
гы...
неа
мне самому по приколу
b z (2007-06-08 16:21:00) [2]
> от вас узнать-с
а программу не написать за вас? ;)
webpauk (2007-06-08 16:14:00) [3]
> b z (08.06.07 16:12) [22]
гы...
я хотел по простому
от вас узнать-с
b z (2007-06-08 16:12:00) [4]
> OldParentWndPrc:=TWinControl(AOwner).WindowProc;
TImageEx.Create(nil);
> состояние shift и ctrl какими константами определяется?
смотрите в недрах vcl (units: Windows, Messages)
webpauk (2007-06-08 15:53:00) [5]есть
но! ловить click надо только в пределах parent component
собственно говоря, засунул array в class, а уже классу присобачил Parent.WindowProc
единств. вопрос остался:
состояние shift и ctrl какими константами определяется?
эмпирически Msg.wparam=5(9)
а как правильнее записать эти 5 и 9?
clickmaker (2007-06-08 15:47:00) [6]а что, кроме имиджей и формы ничего нет? то есть юзер обречен щелкнуть либо по имиджу, либо по форме без вариантов?
webpauk (2007-06-08 15:42:00) [7]дополнение: есть array of TimageEx
и соответс при каждом создании TimageEx - происходит
OldParentWndPrc:=TWinControl(AOwner).WindowProc;
TWinControl(AOwner).WindowProc:=NewParentWndPrc;
может в консерватории что-то поменять?
webpauk (2007-06-08 15:37:00) [8]извиняюсь за тупость, нада помощ:
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
как правильно?
b z (2007-06-08 15:32:00) [9]
> извиняюсь
ну хорошо хоть так :)
webpauk (2007-06-08 15:20:00) [10]упс...
извиняюсь
WM_LBUTTONDOWN и надоть ловить
webpauk (2007-06-08 15:18:00) [11]
> homm © (08.06.07 15:15) [14]
я согласен на Parent.WindowProc
какой месс ловить для click вне компонента
homm (2007-06-08 15:15:00) [12]> нужно отловить WM_LBUTTONDOWN ВНЕ компонента!!!
Тебе уже как минимум 2 способа сказали.
См. [9], [7];
webpauk (2007-06-08 15:12:00) [13]
> b z (08.06.07 14:36) [11]
нужно отловить WM_LBUTTONDOWN ВНЕ компонента!!!
clickmaker (2007-06-08 14:46:00) [14]
> хочется реализовать наследника Timage, который отслеживает
> Click вне пределов компонента
а что он при этом должен делать?
b z (2007-06-08 14:36:00) [15]
> webpauk (08.06.07 14:32) [10]
ну это по обстоятельствам, я ж не знаю что у вас там происходит
к примеру WM_LBUTTONDOWN
webpauk (2007-06-08 14:32:00) [16]
> b z (08.06.07 14:19) [9]
а какой message отлавливать?
b z (2007-06-08 14:19:00) [17]
> webpauk (08.06.07 13:50) [6]
можно наверное через Parent.WindowProc
Правильный Вася (2007-06-08 14:05:00) [18]
> webpauk (08.06.07 13:50) [6]
а запуск северокорейских ракет он не должен отслеживать?
Сергей М. (2007-06-08 13:58:00) [19]
> webpauk (08.06.07 13:50) [6]
imho, блажь.
Уж если не нравится единый обработчик OnClick для всех контролов, то чем тогда не угодила обработка Application.OnMessage ? Через это событие проходит подавляющее большинство сообщений, в т.ч. мышиных ...
webpauk (2007-06-08 13:50:00) [20]блин, хочется реализовать наследника Timage, который отслеживает Click вне пределов компонента