Qt: implement PostMessage as postponed TWinControl.Perform

git-svn-id: trunk@12164 -
This commit is contained in:
paul 2007-09-24 12:37:29 +00:00
parent e6fd31a96f
commit 5269651533
4 changed files with 27 additions and 16 deletions

View File

@ -135,7 +135,8 @@ type
const
TargetEntrys = 3;
QEventLCLMessage = QEventUser;
var
QtWidgetSet: TQtWidgetSet;

View File

@ -141,8 +141,7 @@ end;
------------------------------------------------------------------------------}
procedure TQtWidgetSet.AppProcessMessages;
begin
if QCoreApplication_hasPendingEvents
then
if QCoreApplication_hasPendingEvents then
QCoreApplication_processEvents();
end;

View File

@ -32,7 +32,7 @@ uses
{$else}
qt4,
{$endif}
qtobjects,
qtobjects, qtint,
// Free Pascal
Classes, SysUtils, Types,
// LCL
@ -128,6 +128,7 @@ type
procedure SlotPaint(Event: QEventH); cdecl;
procedure SlotResize; cdecl;
procedure SlotContextMenu; cdecl;
procedure SlotLCLMessage(Sender: QObjectH; Event: QEventH); cdecl;
public
procedure Activate;
procedure BringToFront;
@ -1360,6 +1361,11 @@ begin
QEventResize: SlotResize;
QEventPaint: SlotPaint(Event);
QEventContextMenu: SlotContextMenu;
QEventLCLMessage:
begin
SlotLCLMessage(Sender, Event);
Result := True;
end;
else
QEvent_ignore(Event);
end;
@ -2032,6 +2038,18 @@ begin
LCLObject.PopupMenu.PopUp(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;
procedure TQtWidget.SlotLCLMessage(Sender: QObjectH; Event: QEventH); cdecl;
var
MessageEvent: QLCLMessageEventH absolute Event;
Msg: TLMessage;
begin
Msg.msg := QLCLMessageEvent_getMsg(MessageEvent);
Msg.wParam := QLCLMessageEvent_getWParam(MessageEvent);
Msg.lParam := QLCLMessageEvent_getLParam(MessageEvent);
Msg.Result := 0;
DeliverMessage(Msg);
end;
procedure TQtWidget.Activate;
begin
QWidget_activateWindow(Widget);

View File

@ -3377,23 +3377,16 @@ begin
end;
function TQtWidgetSet.PostMessage(Handle: HWND; Msg: Cardinal; wParam: WParam; lParam: LParam): Boolean;
{var
var
Widget: TQtWidget absolute Handle;
Event: QEventH;
}
Event: QLCLMessageEventH;
begin
Result := False;
if Handle <> 0 then
begin
{$note todo ask in bindings}
{
Event := QEvent_create(QEventUser);
try
QCoreApplication_postEvent(Widget.Widget, Event);
finally
QEvent_destroy(Event);
end;
}
Event := QLCLMessageEvent_create(QEventLCLMessage, Msg, wParam, lParam, 0);
QCoreApplication_postEvent(Widget.Widget, Event);
Result := True;
end;
end;
{------------------------------------------------------------------------------