Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
Delphi 2007 Professional
|
7. Apr 2003, 17:16
Hi Hansa,
ich hab am Wochenende mal ein bischen rumgespielt.
Erst mal folgendes.
Es reicht natürlich nicht dem Objekt einfach einen Canvas zuzuweisen. Dann hast Du zwar einen Canvas, aber was bringt's.
Lege besser einen TControlCanvas an und weise der Eigenschaft Control im Constructor deines Button's der Eigenschaft FCanvas(TControlCanvas).Control := self zu.
Somit ist erst mal Dein Button mit dem Canvas verknüpft.
Leider ist es nun aber so, dass das TButton-Object von Windows stammt (deshalb findest du in den Propertys auch keinen Canvas). Du müßtest jetst alle Paint und gleichlautenden Methoden und Ereignisse überschreiben und damit das Aussehen Deines neuen Buttons definieren. Das sah sehr mühsehlig aus, aber muß wohl sein.
Ich habe festgestellt, dass das Object TControlCanvas von den SpeedButton zur Darstellung der Glyph's verwendet wird. Wenn du beim neuzeichnen für den Canvas-Rect nicht die gesamte Buttongröße angibst, sondern nur einen zu gestaltenden Bereich wird vieles sicher einfacher.
Im großen und ganzen glaube ich, dass das was du willst darauf hinaus läuft, dass du alle möglichen Zeichenroutinen für deinen Farbbutton neu schreiben mußt (Paint im Zusammenhang mit Refresh, Redraw; wie sieht der Button im Down-Modus aus; 3D-Darstellung etc. etc. ...).
Viel Spaß
Gruß oki
|