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 TTabSheet-Caption-Ausrichtung mit Accelerator (https://www.delphipraxis.net/166284-ttabsheet-caption-ausrichtung-mit-accelerator.html)

CCRDude 6. Feb 2012 14:03

TTabSheet-Caption-Ausrichtung mit Accelerator
 
Leider habe ich hierzu bisher nichts im Internet gefunden:

Neue Form. Ich füge ein TPageControl hinzu, dem dann 4 TTabSheet. Zwei davon bekomme eine Caption mit Accelerator, zwei ohne ("Test1", "Test2", "Test&3", "Test&4).

Angezeigt werden die Captions mit Accelerators nicht zentriert, sondern mit leicht nach rechts verschobenem Text.

Scheint so, als würde die VCL da für die Berechnung der Position des Textes da den Accelerator ignorieren.

Kennt jemand einen Workaround? Ist das schon jemandem aufgefallen?

(edit hat das eben im QC eingestellt)

Andreas L. 6. Feb 2012 14:11

AW: TTabSheet-Caption-Ausrichtung mit Accelerator
 
Mit dem kaufmännischen Und kannst du einen Buchstaben für die Tastaturnavigation festlegen. Das Zeichen nach dem & wird dann unterstrichen angezeigt. Schreibst du zwei & nacheinander (z. B. 'Test && Bla') wird ein einzelnes & angezeigt.

Zentrieren kann man den Text im TabSheet mit einem &-Zeichen nicht.

himitsu 6. Feb 2012 14:14

AW: TTabSheet-Caption-Ausrichtung mit Accelerator
 
Da diese Komponente standardmäßig von windows gezeichnet wird ... nee, kenn nix.

Selber Zeichnen oder irgendwie mit Skins arbeiten, welche das ebenfalls selber zeichnen.

CCRDude 6. Feb 2012 14:28

AW: TTabSheet-Caption-Ausrichtung mit Accelerator
 
@Andreas L: wer sagt denn, dass ich zentrieren will? Ich nutze sie als Accelerators, also genau mit der Funktion, die Du beschreibst. Zentrieren tut sie die VCL, wenn ich keinen Accelerator verwende, aber nicht korrekt, wenn ich einen verwende.

@himitsu: wird sie? Würde Windows komplett dafür verantwortlich sein, würden die Accelerators nur bei gedrückter Alt-Taste sichtbar sein, außerdem ist da so diverses anders als beim Original. Auch andere Tickets scheinen anzudeuten, dass sich das Caption-Verhalten zwischen Delphi-Versionen (und nicht zwischen Windows-Versionen) geändert hat.

Muss ja nichtmal sein, dass Delphi die selber zeichnet, aber irgendwo einen Parameter falsch übergibt...

jaenicke 6. Feb 2012 15:02

AW: TTabSheet-Caption-Ausrichtung mit Accelerator
 
Aus unserer Implementierung einer abgeleiteten Komponente:
Delphi-Quellcode:
    procedure DrawTab(TabIndex: Integer; const Rect: TRect; Active: Boolean); override;
...
procedure T...PageControl.DrawTab(TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
  inherited;
  ...
    Canvas.Brush.Style := bsSolid;
    Canvas.Font.Color := clBtnHighlight;
    Canvas.FillRect(Rect);
    Canvas.TextOut(CaptionLeft, CaptionTop, StripHotKey(Pages[PageArrayIndex].Caption));
Wir benutzen dort aus der Unit Menus die Funktion StripHotKey um das Zeichen vor dem Zeichnen zu entfernen. Natürlich passiert das auch bei der Berechnung der Textposition schon, ich habe es jetzt nur zur Illustration dorthin gepackt.

Andreas L. 6. Feb 2012 15:09

AW: TTabSheet-Caption-Ausrichtung mit Accelerator
 
Zitat:

Zitat von CCRDude (Beitrag 1149475)
@Andreas L: wer sagt denn, dass ich zentrieren will?

Zitat:

Angezeigt werden die Captions mit Accelerators nicht zentriert, sondern mit leicht nach rechts verschobenem Text.
Daraus habe ich geschlossen das du die Caption zentrieren willst.

CCRDude 6. Feb 2012 16:14

AW: TTabSheet-Caption-Ausrichtung mit Accelerator
 
@Jaenicke: vielen Dank, werde ich gleich morgen früh mal ausprobieren!

@Andreas L: stimmt, etwas mißverständlich, ich hätte vermutlich schreiben sollen "nicht wie ohne A. angezeigt" oder "nicht wie erwartet angezeigt"; dass zentriert das erwartete Standardverhalten ist/war, steht da nicht explizit.


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