![]() |
TAction.Caption in Speedbutton deaktivieren
Hi,
nach langem Rumprobieren mit Ribbon (dann verworfen, weil mir dort bestimmte Möglichkeiten fehlen) habe ich mich entschlossen, einfach mit Actions ,ActionMainMenuBar und einem simplen Panel zu arbeiten. Nun stellt sich folgendes Problem. Z.B. habe ich eine TAction mit der Caption "Schrift vergrößern", die ich sowohl im MainMenu einsetzen will, als auch mit einem Speedbutton verbinden will. Ist ja auch kein Problem. Während ich im MainMenu die Caption haben will, so soll sie im Speedbutton natürlich nicht angezeigt werden. Der Speedbutton übernimmt die Caption ja automatisch in seine Eigenschaften. Auch wenn ich sie da händisch wieder rauslösche, also im OI beim Speedbutton Caption leer ist, und in der Delphi-GUI alles richtig dargestellt wird, wird zur Runtime die Caption im Speedbutton trotzdem wieder dargestellt, was nicht wirklich schön aussieht. Wie kann man das lösen? |
AW: TAction.Caption in Speedbutton deaktivieren
Überall wo die Caption nicht übernommen werden soll, diese Unit in die interface-uses-clause mit aufnehmen:
Delphi-Quellcode:
unit NoCaptionSpeedButtons;
interface uses Vcl.Controls, Vcl.Buttons; type TSpeedButton = class(Vcl.Buttons.TSpeedButton) protected function GetActionLinkClass: TControlActionLinkClass; override; end; TNoCaptionSpeedButtonActionLink = class(Vcl.Buttons.TSpeedButtonActionLink) protected function IsCaptionLinked: Boolean; override; end; implementation function TSpeedButton.GetActionLinkClass: TControlActionLinkClass; begin Result := TNoCaptionSpeedButtonActionLink; end; function TNoCaptionSpeedButtonActionLink.IsCaptionLinked: Boolean; begin result := false; end; end. |
AW: TAction.Caption in Speedbutton deaktivieren
Das ist ja eine schöne Lösung, kannte ich auch noch nicht.
Kleiner Nachteil ist dabei aber, dass dann alle Buttons den Caption-Text der Action nicht erhalten. Ich habe teilweise Buttons, die sollen den Action-Text übernehmen, andere nicht. Da habe ich es simpel so gelöst, dass zur Runtime, im FormCreate-Event die Caption-Eigenschaft der betroffenen Speedbuttons einfach auf leer gesetzt wird
Delphi-Quellcode:
button1.caption := '';
|
AW: TAction.Caption in Speedbutton deaktivieren
Dann eben richtig ableiten, noch ein Property zum (de)aktivieren dieser Funktion mit einbauen und diese neue Komponente dann natürlich in ein Designtime-Package rein.
Alernativ in der #2 als Public-Property rein und per Code zuweisen (z.B. im OnCreate), aber zur DesignTime geht es so natürlich nicht. |
AW: TAction.Caption in Speedbutton deaktivieren
Zitat:
|
AW: TAction.Caption in Speedbutton deaktivieren
Super, danke für die Lösung. Da wär das ch im Leben nicht selbst drauf gekommen.
Zum Thema "dann haben alle Speedbuttons keine Caption" : dann leite ich mir das halt in eine neue Klasse TNoCaptionSpeedButton ab, dann sollte TSpeedButton nach wie vor über seine Caption verfügen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr. |
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