Einzelnen Beitrag anzeigen

Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Herausfinden, welches ListView Popup aufruft

  Alt 5. Jul 2004, 11:25
Eine Möglichkeit wäre, das PopupMenu manuell zu öffnen.
Als einfaches Beispiel kann ich dir das hier bringen. Das PopupMenu brauchst du nicht mehr der Listview zuzuordnen.

Delphi-Quellcode:
procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  TrackButton: TMouseButton;
begin
  if PopupMenu1.TrackButton = tbRightButton then
    TrackButton := mbLeft
  else
    TrackButton := mbRight;
  fLastSender := Sender;
  if Button = TrackButton then
    PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;
Hier wird das PopupMenu direkt in der OnClick-Routine definiert.
Willst du es lieber dynamisch halten, so kannst du folgende Routine verwenden:
Delphi-Quellcode:
procedure TForm1.ListViewMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  TrackButton: TMouseButton;
  PopupMenu: TPopupMenu;
begin
  PopupMenu := TPopupMenu(FindComponent('PopupMenu'+IntToStr(TListview(Sender).Tag)));
  if PopupMenu = nil then
  begin
    ShowMessage('Oooops...');
    Exit;
  end;
  if PopupMenu.TrackButton = tbRightButton then
    TrackButton := mbLeft
  else
    TrackButton := mbRight;
  fLastSender := Sender;
  if Button = TrackButton then
    PopupMenu.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;
Hier wird das PopupMenu über das Tag der Listview angesprochen. Die PopupMenus müssen den Namen 'PopupMenu#' haben, wobei # irgendeine Nummer ist. Diese Nummer wird dann im Tag angegeben. Wird kein PopupMenu gefunden, so wird z.Zt. eine Fehlermeldung ausgegeben, dies kannst du aber sehr einfach ändern. Der Code ist hoffentlich verständlich genug, ich habe ihn außerdem nicht getestet.


Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat