Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Klick auf Spaltenheader (TListView) erkennen (https://www.delphipraxis.net/94086-klick-auf-spaltenheader-tlistview-erkennen.html)

MCXSC 15. Jun 2007 23:33


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

Luckie 16. Jun 2007 00:07

Re: Klick auf Spaltenheader (TListView) erkennen
 
Also für die Header gibt es OnColumnRightClick.

MCXSC 16. Jun 2007 00:29

Re: Klick auf Spaltenheader (TListView) erkennen
 
Arg... Shame on me...

Okay, ich war blind... Sorry...

MCXSC 16. Jun 2007 00:40

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....

Luckie 16. Jun 2007 01:18

Re: Klick auf Spaltenheader (TListView) erkennen
 
Tja, keine Ahnung was du machst. Ohne etwas Code von dir, wird das hier nichts. ;)

MCXSC 16. Jun 2007 01:27

Re: Klick auf Spaltenheader (TListView) erkennen
 
Okay. ;)

Im ColumnRightClick öffne ich das Popup 1:

Delphi-Quellcode:
Popup1.Popup(Point.x, Point.y);
Popup 2 ist in den Eigenschaften der ListView unter "PopupMenu" eingetragen...

Ghostwalker 16. Jun 2007 04:49

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.

MCXSC 18. Jun 2007 03:44

Re: Klick auf Spaltenheader (TListView) erkennen
 
Zitat:

Zitat von Ghostwalker
OnContextPopup-Event anhand der Mausposition feststellen in welchem Bereich des Listviews du bist (Columnheader, Row usw.) und das entsprechende Menü hochpopen.

Und wie kann ich die Bereiche feststellen? :oops:

Ghostwalker 18. Jun 2007 04:06

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).

gmc616 22. Jun 2007 11:20

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 08:19 Uhr.
Seite 1 von 2  1 2      

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