AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TAction.Caption in Speedbutton deaktivieren

Ein Thema von Captnemo · begonnen am 27. Mai 2015 · letzter Beitrag vom 27. Mai 2015
Antwort Antwort
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#1

TAction.Caption in Speedbutton deaktivieren

  Alt 27. Mai 2015, 19:51
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?
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: TAction.Caption in Speedbutton deaktivieren

  Alt 27. Mai 2015, 20:09
Ü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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TAction.Caption in Speedbutton deaktivieren

  Alt 27. Mai 2015, 21:09
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

button1.caption := '';
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: TAction.Caption in Speedbutton deaktivieren

  Alt 27. Mai 2015, 21:26
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

AW: TAction.Caption in Speedbutton deaktivieren

  Alt 27. Mai 2015, 21:44
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.
Das wäre in der Tat der korrekte Weg.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#6

AW: TAction.Caption in Speedbutton deaktivieren

  Alt 27. Mai 2015, 22:00
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.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 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