Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - PageControl -> Tabsheet -> Bezeichnung per Doppelklick änder


HawkLUED - Do 15.03.07 12:55
Titel: PageControl -> Tabsheet -> Bezeichnung per Doppelklick änder
Hi zusammen,

in meinem Programm existiert eine PageControl-Komponente mit mehreren Tabsheets. Ich möchte es dem Anwender ermöglichen, die Bezeichnung des Tabsheets zu ändern und zwar folgendermassen:

Doppelklick per Maus auf den Tabsheetreiter und/oder per Kontextmenü (ebenfalls auf dem Tabsheetreiter)!

Habe bislang nirgendwo etwas gefunden, wie man dies hinbekommen könnte. Evtl. TTabsheet ableiten, und das Event WM_LBUTTONDBLCLK abfangen und dann anhand der Mausposition entscheiden, ob man sich auf dem Reiter befindet??

Wer kann helfen????

Danke im voraus!

Gruß

Hawk


Robinator - Do 15.03.07 13:12

Soweit ich weis, kannst du den geklickten Tab wirklich nur selber berechnen.

Da du im OnDblClick Event aber keine Mauskoordinaten geliefert bekommst, musst du dir diese schon im OnMouseDown zwischenspeichern.


gruss, Rob


HawkLUED - Do 15.03.07 13:46
Titel: Re: PageControl -> Tabsheet -> Bezeichnung per Doppelklick änder
Man bekommt das Ereignis nur auf der Tabfläche, aber auf dem Reiter kommt nix!

Das muss doch irgendwie gehen!

Gruß

Hawk


IngoD7 - Do 15.03.07 13:55
Titel: Re: PageControl -> Tabsheet -> Bezeichnung per Doppelklick änder
user profile iconHawkLUED hat folgendes geschrieben:
Man bekommt das Ereignis nur auf der Tabfläche, aber auf dem Reiter kommt nix!
Klicks auf den Reitern gehen an das PageControl, nicht an das entsprechende TabSheet.


oldmax - Do 15.03.07 14:09

Hi
Also, ich habe weder zu TPageControl noch zu TabSheet ein OnClick oder ähnlich verwertbares gefunden. Daher schlage ich vor, du packst auf deine TabSheet's einfach Panels. Die können OnClick als auch onDblClick- Ereignisse .
Ab hier ist's dann einfach



Delphi-Quelltext
1:
2:
Pagecontrol1.ActivePage.Caption:=
             InputBox('neuerName''Eingabeaufforderung, 'Vorgabetext');

Geht natürlich auch mit allen Objecten, die solche OnClick-Ereignisse verarbeiten.

Gruß oldmax


HelgeLange - Do 15.03.07 14:15

man fängt einfach selbst das Mausereignis ab mit einer Message-procedure. Ein Panel draufzulegen ist verschwenderisch, da diese auch nochmal ein eigenes FensterHandle haben