AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Herausfinden, welches ListView Popup aufruft

Ein Thema von seifman · begonnen am 5. Jul 2004 · letzter Beitrag vom 5. Jul 2004
Antwort Antwort
seifman
(Gast)

n/a Beiträge
 
#1

Herausfinden, welches ListView Popup aufruft

  Alt 5. Jul 2004, 10:51
Hallo!

Ich habe eine Form, auf der mehrere ListViews liegen. An jedem hängt ein und dasselbe Popupmenu dran. Ich möchte nun herausbekommen in welchem der Listviews das Popup aufgerufen wurde.
Habe es schon fogendermaßen probiert :
Code:
procedure TfmMain.pmListViewsPopup(Sender : TObject);
begin
  fLastSender := Sender;
end;
Die Variable fLastSender habe ich global als TObject deklariert.

Sie wird ja auch gesetzt, jedoch ist es dann das PopUpMenu, welches hineingeschrieben wurde.

Was ist falsch. Was muss ich anders machen.

mfg seifman
  Mit Zitat antworten Zitat
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
seifman
(Gast)

n/a Beiträge
 
#3

Re: Herausfinden, welches ListView Popup aufruft

  Alt 5. Jul 2004, 12:47
Ist leider nicht das was ich wollte.
Ich habe vergessen zu erwähnen, daß ich die ListViews auf verschiedenen Tabs platziert habe.
Ich möchte daß PopUpMenu dazu verwenden, nur Aktionen mit dem ListView durchzuführen, von dem es aufgerufen worden ist.
Die einzelnen Items des ListView habe allesamt Checkboxen. Im PopupMenu habe ich die MenuItems "Select all" und "Deselect all", welche dann alle Checkboxen markieren bzw. demarkieren sollen.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Herausfinden, welches ListView Popup aufruft

  Alt 5. Jul 2004, 12:50
Mit (PopupMenu1.PopupComponent as TListView)... kommst Du an die auslösende ListView ran

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
seifman
(Gast)

n/a Beiträge
 
#5

Re: Herausfinden, welches ListView Popup aufruft

  Alt 5. Jul 2004, 12:54
Dankeshön an euch beide.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz