![]() |
Klick auf Spaltenheader (TListView) erkennen
Hallo,
ich würde gerne 2 Popups in eine TListView bauen... Also folgendermaßen: Rechtsklick auf (irgendeinen) Spaltenheader --> Popup 1 öffnen Rechtsklick auf die Einträge (also auf alles unterhalb der Header) --> Popup 2 öffnen Nur entweder bin ich blind, oder ich finde dazu nichts... :( Kann mir jemand einen Tipp geben? Hf, MCXSC |
Re: Klick auf Spaltenheader (TListView) erkennen
Also für die Header gibt es OnColumnRightClick.
|
Re: Klick auf Spaltenheader (TListView) erkennen
Arg... Shame on me...
Okay, ich war blind... Sorry... |
Re: Klick auf Spaltenheader (TListView) erkennen
Jetzt habe ich aber noch ein kleines Problem:
Wenn ich nun mit der rechten Maustaste auf die Header klicke, öffnet sich Popup1 in Vordergrung und Popup2 direkt dahinter, obwohl es eigentlich gar nicht aufpoppen sollte.... |
Re: Klick auf Spaltenheader (TListView) erkennen
Tja, keine Ahnung was du machst. Ohne etwas Code von dir, wird das hier nichts. ;)
|
Re: Klick auf Spaltenheader (TListView) erkennen
Okay. ;)
Im ColumnRightClick öffne ich das Popup 1:
Delphi-Quellcode:
Popup 2 ist in den Eigenschaften der ListView unter "PopupMenu" eingetragen...
Popup1.Popup(Point.x, Point.y);
|
Re: Klick auf Spaltenheader (TListView) erkennen
Der Rechtsklick erzeugt u.A. auch das Ereignis onContextPopup. Da du für das ganze Control ein Popup-Menü zugewiesen hast, wird das automatisch aufgerufen. Wenn du unterschiedliche Popup-Menüs für unterschiedliche Breiche des Listviews haben möchtest, mußt du im OnContextPopup-Event anhand der Mausposition feststellen in welchem Bereich des Listviews du bist (Columnheader, Row usw.) und das entsprechende Menü hochpopen.
|
Re: Klick auf Spaltenheader (TListView) erkennen
Zitat:
|
Re: Klick auf Spaltenheader (TListView) erkennen
Naja..über mouse.cursorpos bekommst du die aktuelle Position des Mauszeigers auf dem Bildschirm, dann
müßtest du prüfen ob die position innerhalb eines Header-Elementes liegt (mit Left,Top,Width,height, kannst du dir das entsprechende Rechteck ermitteln). Evtl. gibts für den 2. Schritt sogar schon eine Methode im Listview (GetItemPos oder sowas). |
Re: Klick auf Spaltenheader (TListView) erkennen
Ich häng mich da mal rein. Hab das gleiche Problem.
Leider lässt sich der Bereich der Listview-ColumnHeader nicht so einfach ermitteln. Ich wüsste nicht wie. :gruebel: TListColumn's haben kein WindowHandle und keine Höhe die man abfragen könnte. Man bekommt nur den Bereichs der ganzen TListView herraus. Evtl. könnte man im OnColumnRigthClick ein boolean setzten der im OnContextPopup ausgewertet wird und das poppen des Context-Menüs verhindert. Ob das funktioniert ... ??? :gruebel: Oder man geht ein fach davon aus das ein Header immer 20 hoch ist. Ist aber unschön und man wird evtl. mit den XPStyles Schwierigkeiten bekommen. :pale: Sonst noch jemand Ideen? *PUSH* gmc |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz