Главная страница
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.06 c
14-1088987464
Sanek_metaller
2004-07-05 04:31
2004.07.25
Resourse Kit


4-1086870441
Лёха
2004-06-10 16:27
2004.07.25
RegNotifyChangeKeyValue, отслеживание реестра


1-1089149288
Diver
2004-07-07 01:28
2004.07.25
Как можно преобразовать любое изображение(битмап любого формата)


6-1085649239
Delpher_Gray
2004-05-27 13:13
2004.07.25
Проблема с HTTP->Get запросом


3-1088399015
Sirus
2004-06-28 09:03
2004.07.25
Передача свежих данных на сервер по модему...