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

Вниз

Общий OnMessage для неск. контролов. Как определить текущий?   Найти похожие ветки 

 
L`Autour ©   (2008-09-11 13:10) [0]

Конкретно использую два KOLListView у которых зеркально похожая обработка на события в программе (т.е для рациональнее использовать общие обработчики с указанием на используемый ListView). И если если для обработки конкретных событий я могу определить какой ListView используется по получаемому параметру Sender, то для OnMessage его нет.

Есть конечно Msg.hwnd, только не ясно с чем его сравнивать (свойство ListView.handle не подходит).


 
b z   (2008-09-11 14:26) [1]

см. FindControl(Msg.hwnd)


 
b z   (2008-09-11 14:27) [2]

ой сори не заметил конференцию :(


 
Compiler ©   (2008-09-11 14:50) [3]

AttachProc используй, там Sender есть. Заполняй у ListView"ов св-во Tag и различай их


 
L`Autour ©   (2008-09-11 14:59) [4]

Зачем AttachProc, если есть четкое соответствие между Msg.hwnd и ListView.handle?
Я хочу только узнать какой функцией из одного получить другое.

По свойсту Tag. В том и пробема, что в обработчике:

function TForm1.ListViewTbl1Message(var Msg: tagMSG;
 var Rslt: Integer): Boolean;

Нету указателя на контрол, по свойствам которого я его смогу определить.


 
Compiler ©   (2008-09-11 15:21) [5]


SetProp(Listview1.Handle, ID_SELF,DWORD(@Listview1));
...
_Self:=Pointer(GetProp(msg.hwnd,ID_SELF));

или

SetWindowLong(..,GWL_USERDATA,..)
GetWindowLong(..,GWL_USERDATA)


 
Дмитрий К ©   (2008-09-11 15:26) [6]

А у меня Msg.hwnd и ListView.Handle равны, правда без MCK.

program Project1;

uses
 Windows, Messages, KOL;

var
 Form, LV1, LV2, LV3: PControl;

function LVMessage(Dummy: Pointer; var Msg: TMsg; var Rslt: Integer): Boolean;
var
 lv: PControl;
begin
 Result := False;
 if Msg.hwnd = lv1.Handle then
   lv := LV1
 else
   if Msg.hwnd = lv2.Handle then
     lv := LV2
   else
     lv := LV3;
 case Msg.message of
   WM_LBUTTONDOWN:
     lv.LVItemAdd("Click!");
   WM_MOUSEWHEEL:
     lv.LVItemAdd("Wheel!");
   WM_SIZE:
     lv.LVItemAdd("Size!");
 end;
end;

begin
 Form := NewForm(nil, "TestLVsMsg");
 LV1 := NewListView(Form, lvsList, [], nil, nil, nil).SetAlign(caTop);
 LV2 := NewListView(Form, lvsList, [], nil, nil, nil).SetAlign(caTop);
 LV3 := NewListView(Form, lvsIcon, [], nil, nil, nil).SetAlign(caTop);
 LV1.OnMessage := TOnMessage(MakeMethod(nil, @LVMessage));
 LV2.OnMessage := TOnMessage(MakeMethod(nil, @LVMessage));
 LV3.OnMessage := TOnMessage(MakeMethod(nil, @LVMessage));
 Run(Form);
end.


 
L`Autour ©   (2008-09-12 06:06) [7]

Мда.
Уже сам нашел:
if (ListViewTbl1.GetWindowHandle = Msg.hwnd) then



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

Форум: "KOL";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.064 c
15-1272740317
adav84
2010-05-01 22:58
2010.08.27
может ли ATTiny13 делать FFT в realtime?


2-1267379618
Pavel
2010-02-28 20:53
2010.08.27
Загрузка данных из файла в поток


15-1264714204
Юрий
2010-01-29 00:30
2010.08.27
С днем рождения ! 29 января 2010 пятница


6-1219129924
Michael
2008-08-19 11:12
2010.08.27
Как проверить наличие файла на FTP


2-1273738117
9x3bk
2010-05-13 12:08
2010.08.27
Работа с совмещением картинок





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