Delphi-PRAXiS

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 Auf ToolButton zeichnen (https://www.delphipraxis.net/31098-auf-toolbutton-zeichnen.html)

Reddog 4. Okt 2004 13:28


Auf ToolButton zeichnen
 
Hallo,

ich habe eine Komponente von TToolBar abgeleitet. Funktioniert soweit alles ganz gut, aber ich möchte auf dem ersten ToolButton der erstellt wird ein kleines Dreieck zeichnen. TToolButton hat zwar eine Canvas-property vom TGraphicControl, aber leider protected, sodass ich nicht darauf zugreiffen kann. Weiß jemand einen Ausweg?

Danke,
Reddog.

Bernhard Geyer 4. Okt 2004 14:13

Re: Auf ToolButton zeichnen
 
Dann leide halt auch noch die TToolbutton, um eine TToolbuttonMitKleinenDreieck-Klasse ab.
Oder verkleiner deiner Toolbar-Klasse die Child-Area, so das sie Toolbuttons nicht gleich ganz links anliegen. Dann solltest Du auf dem Toolbar-Canvas zeichnen können.

Reddog 4. Okt 2004 14:32

Re: Auf ToolButton zeichnen
 
Ich hab ja probiert von TToolButton ne eigene Klasse abzuleiten. Aber wie kann ich die Komponente dazu veranlassen ihre ToolButtons statt als TToolButton als TToolButtonMitDreieck zu erstellen?
Das wäre natürlich die beste Lösung, wenn's irgendwie geht.

Bernhard Geyer 5. Okt 2004 07:06

Re: Auf ToolButton zeichnen
 
Du wirst dafür sehr viel mehr Funktionen von TToolbar überschreiben müssen. Überall wo TToolbar ein TToolButton erzeugt musst Du stattdessen ein TMyToolButton erzeugen. Ist jedoch nicht gerade trivial (Sine nicht gerade kurze Funktionen in ComCtrls.pas, welche Du überschreiben müsstest).

Reddog 5. Okt 2004 11:23

Re: Auf ToolButton zeichnen
 
Das ist ja auch der Grund, warum ich hier diese Frage gestellt habe.
Ich hab mir TToolBar angeschaut, und ich find nicht mal die Funktion, wo es die ToolButtons erzeugt. Das ist irgendwie sehr durcheinander. Ich hab mal ein TreeView verändert, und da war das perfekt einfach gemacht, man musste nur an einer Stelle in einer Funktion den Typ der erzeugten Kinder verändern. Tja mir ist bis jetzt nichts besseres eingefallen als:
Delphi-Quellcode:
var
  MyCanvas: TControlCanvas;
begin
  MyCanvas:= TControlCanvas.Create;
  MyCanvas.Control:= ToolButton; // auf dem ich zeichnen will
Dann verwende ich dieses Canvas um zu zeichnen. Es klappt, aber ich weiß nicht, ob das jetzt korrekt ist und keine Probleme verursacht. Und dann habe ich noch ein Problem damit, wann es das Dreieck draufzeichnen soll, weil ich irgendwie kein passendes Ereignis finde. Und eine procedur mit message WM_PAINT für die Komponente(abgeleitet von TToolBar) macht bei mir seltsamerweise einen Fehler. Naja, so sieht's aus.

Aber trotzdem danke für die Antwort.
Reddog.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:41 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