Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Klick auf Caption einer Groupbox erkennen (https://www.delphipraxis.net/151551-klick-auf-caption-einer-groupbox-erkennen.html)

Keks 22. Mai 2010 15:35


Klick auf Caption einer Groupbox erkennen
 
Ich würde gerne eine Aktion durchführen, wenn der Benutzer auf den Caption-Text einer Groupbox klickt. Es gibt zwar onClick aber das wird für die komplette Fläche der Groupbox ausgeführt. Wie kann ich das nun auf den Text einschränken?

haentschman 22. Mai 2010 15:43

Re: Klick auf Caption einer Groupbox erkennen
 
Hallo...
so standardmäßig geht das nicht.

Idee:
- Mausposition beim Klick bestimmen
- ermitteln, ob sich der Mausklick in dem Rechteck des Textes befindet (relativ zur Position der Groupbox)
-> if drin then freu :zwinker:

:hi:

Matze 22. Mai 2010 16:04

Re: Klick auf Caption einer Groupbox erkennen
 
Zitat:

Zitat von haentschman
- ermitteln, ob sich der Mausklick in dem Rechteck des Textes befindet (relativ zur Position der Groupbox)

Dann müssten vermutlich auch verschiedene DPI-Einstellungen berücksichtigt werden, denn der Text sollte sich in der Größe dann auch verändern.

Es ist kein Standardverhalten, dass man die Caption einer GroupBox anklicken kann bzw. muss. Kannst du das nicht schöner lösen, sonst klicken vermutlich die wenigsten darauf?
Es sei denn, das ist für ein Privatprojekt.

s.h.a.r.k 22. Mai 2010 16:45

Re: Klick auf Caption einer Groupbox erkennen
 
Zu Not einfach ein Label drüber legen?! Aber wie schon erwähnt worden ist: ein User würde damit eher weniger rechnen, da ich bisher auch noch keinerlei Anwendung gesehen habe, die sowas kann/macht.

Keks 22. Mai 2010 16:49

Re: Klick auf Caption einer Groupbox erkennen
 
Naja, ohne jetzt auf Details einzugehen, würde es in meinem Fall schon Sinn machen.
Ein Label drüberlegen würde vielleicht sogar gehen, aber irgendwie finde ich das unhandlich. Vor allem, weil ich das in mehreren Groupboxen brauche. Hat jemand eine konkrete Idee, wie man den Bereich des Textes erkennen kann?

Luckie 22. Mai 2010 16:51

Re: Klick auf Caption einer Groupbox erkennen
 
Zitat:

Zitat von Keks
würde es in meinem Fall schon Sinn machen.

Könntest du das mal bitte erklären? Mir erschließt sich die Funktionalität nämlich nicht. Eventuell findet sich eine bessere Lösung.

s.h.a.r.k 22. Mai 2010 16:53

Re: Klick auf Caption einer Groupbox erkennen
 
Ich denke, dass du das nicht so einfach bewerkstelligen kannst, außer du machst da selbst etwas. Eine GroupBox hat ja nur eine Eigenschaft Caption und die GroupBox zeichnet das Ding halt irgendwo hin. Habe bisher noch keine Eigenschaft entdeckt, um das ändern zu können oder evtl. Zugriff auf diverse Parameter zu haben. Du könntest dir mal den Source-Code anschauen, aber ob das wirklich was hilft bezweifle ich.

Oder du nimmst diesen eher dirty Workaround mit dem Label und leitest von GroupBox an (z.B ExtendedLabeledGroupBox :zwinker: ) und machst das alles selbst. Die Caption der GroupBox setzt du quasi intern immer auf einen Leerstring und die Property Caption leitest du auf das Label um. So merkst du nach "außen" nicht wirklich, dass es sich um ein Label handelt und kannst es wie eine normale GroupBox verwenden.

@Luckie: nur geratene Features: Auf- und Zuklappen des Content-Bereichs (gibts aber bessere Komponenten dafür), Drag & Drop über die Caption...

toms 22. Mai 2010 17:05

Re: Klick auf Caption einer Groupbox erkennen
 
Schwupps...

Delphi-Quellcode:
type
  TMyGroupBox = class(TGroupBox)
public
  property Canvas;
end;

procedure TForm1.GroupBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  myRect : TRect;
begin
  with TMyGroupBox(Sender as TGroupBox) do
    myRect := Rect(8, 0, 8 + Canvas.TextWidth(Caption), Canvas.TextHeight(Caption));

  if PtInRect(myRect, Point(X, Y)) then ShowMessage('Click!')
end;

s.h.a.r.k 22. Mai 2010 17:08

Re: Klick auf Caption einer Groupbox erkennen
 
Ist aber die X-Koordinate immer fest?

Luckie 22. Mai 2010 17:08

Re: Klick auf Caption einer Groupbox erkennen
 
OK, und jetzt noch die Anpassung für unterschiedliche Benutzereinstellungen, unterschiedliche Thems, Aero, Windowx XP, Vista und Wundows 7. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 Uhr.
Seite 1 von 2  1 2      

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