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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.005 c
3-1176112195
hamel1on
2007-04-09 13:49
2007.07.01
не работает программа на другом компьютере


2-1181313980
novice
2007-06-08 18:46
2007.07.01
получение динамического массива из функции(процедуры)


2-1181276047
KJ
2007-06-08 08:14
2007.07.01
Выделить строку ListView целиком


2-1181043793
timonissimo
2007-06-05 15:43
2007.07.01
не удается найти строку для обновления


2-1181210608
leonidus
2007-06-07 14:03
2007.07.01
Проблема с обращением к dll





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский