Einzelnen Beitrag anzeigen

blauweiss

Registriert seit: 19. Jun 2007
142 Beiträge
 
#2

Re: Position Popupmenu bei 2 Monitoren

  Alt 1. Apr 2010, 22:07
Hallo flippinho,

das hat mich auch schon geärgert. Es ist ein Bug in der Controls.pas von Delphi5:

Delphi-Quellcode:
procedure TControl.WMContextMenu(var Message: TWMContextMenu);
...
  if (PopupMenu <> nil) and PopupMenu.AutoPopup then
  begin
    SendCancelMode(nil);
    PopupMenu.PopupComponent := Self;
    [b]if Pt.X < 0 then[/b]
      Pt := ClientToScreen(Point(0,0));
    PopupMenu.Popup(Pt.X, Pt.Y);
    Message.Result := 1;
  end;
Im Vergleich dazu die Controls.pas von BDS2009:
Delphi-Quellcode:
procedure TControl.WMContextMenu(var Message: TWMContextMenu);
...
  if (PopupMenu <> nil) and PopupMenu.AutoPopup then
  begin
    SendCancelMode(Self);
    PopupMenu.PopupComponent := Self;
    [b]if InvalidPoint(Pt) then[/b]
      Pt := ClientToScreen(Point(0, 0));
    PopupMenu.Popup(Pt.X, Pt.Y);
    Message.Result := 1;
  end;
Wenn Du nicht die Controls.pas manipulieren willst, gibt es vielleicht die Möglichkeit, die WMContextMenu-Message in Deiner Form abzufangen und das Popupmenu selber aufzupoppen...!?

Frohe Ostern zurück
blauweiss
  Mit Zitat antworten Zitat