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

Вниз

Обработка CLX сообщений   Найти похожие ветки 

 
Mim1 ©   (2004-07-09 08:29) [0]

Здраствуйте, немогу поменять параметры собыитя (сообщения) CLX. Далее текст.

function TMyWidget.EventFilter(Sender: QObjectH;
 Event: QEventH): Boolean;
var p:tpoint;
begin
     if (QEvent_type(Event) = QEventType_MouseButtonPress) then
       begin
         P.X := QMouseEvent_x(QMouseEventH(Event));
         P.Y := QMouseEvent_y(QMouseEventH(Event));
         if ... then
           ...  
       end;
   result := inherited EventFilter(Sender, Event);
end;


Хочется в зависимости от какого то условия сделать
QMouseEvent_x(QMouseEventH(Event)) := 100;
То есть заменить параметр сообщения.

Из некрасиывых решений вижу два
1) создать повое сообщени такого же типа и передать его выше по иерархии вместо текущего
2) вернуть результат что сообщение отработано и сгенерировать новое с нужными параметрами и послать его тому же виджету :), его уже не обрабатывать :)


 
Mim1 ©   (2004-07-09 08:49) [1]

Точно забыл вопрос, можно ли заменить значение параметра не прибегая к некрасивым решениям?


 
Mim1 ©   (2004-07-09 10:58) [2]

Решил проблемку "Некрасивым" методом номер 1.

function TCkgListListView.EventFilter(Sender: QObjectH;
 Event: QEventH): Boolean;
var p,p1:tpoint;
   ss : TShiftState;
   btn:integer;
   state : integer;
begin
 if (Sender = ChildHandle) and
    (QEvent_type(Event) = QEventType_MouseButtonPress) and
    (QMouseEvent_x(QMouseEventH(Event)) > Columns[0].Width) then
   begin
   //
     p.X := Columns[0].Width div 2;
     p.Y := QMouseEvent_Y(QMouseEventH(Event));
     p1.X := QMouseEvent_globalX(QMouseEventH(Event));
     p1.y := QMouseEvent_globalY(QMouseEventH(Event));
     btn := ord(QMouseEvent_button(QMouseEventH(Event)));
     state := ord(QMouseEvent_state(QMouseEventH(Event)));
     //@p1,
     event := QMouseEvent_create(QEvent_type(Event),@p,
       btn,state);
     result := inherited EventFilter(Sender, Event);
     QMouseEvent_destroy(QMouseEventH(Event));
   end
 else
 if (QEvent_type(Event) = QEventType_MouseButtonRelease) then
   begin
     SetCaptureControl(nil);
     result := true
   end
 else
   result := inherited EventFilter(Sender, Event);
end;



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

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

Наверх




Память: 0.47 MB
Время: 0.056 c
9-1081513784
Werwolf
2004-04-09 16:29
2004.07.25
Хочу написать космическую стратегию!!!


4-1086778593
yuryzh
2004-06-09 14:56
2004.07.25
Drag and Drop


3-1088693288
1g0r
2004-07-01 18:48
2004.07.25
глюк MySQL + dbExpress = "dbExpress Error: Invalid Username/P...


14-1088954531
Knight
2004-07-04 19:22
2004.07.25
Кто чем солнечные ожоги лечит?


14-1089022952
CrazyHacKeRs
2004-07-05 14:22
2004.07.25
Раздача лицензий от MicroOlap до 05.07.2004