Delphi-PRAXiS
Seite 1 von 2  1 2      

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 TMenuItem.Caption mit '²' im String wird falsch angezeigt (https://www.delphipraxis.net/169052-tmenuitem-caption-mit-%B2-im-string-wird-falsch-angezeigt.html)

Tinky-Winky 26. Jun 2012 13:23

TMenuItem.Caption mit '²' im String wird falsch angezeigt
 
Hallo,

ich arbeite seit kurzem auf einem neuen Rechner (Windows 7 / 64-Bit) mit einem neuen Delphi (XE2 / Update 4) und habe nun festgestellt, dass in meinem Programm ein Menüpunkt nicht mehr so angezeigt wird, wie früher unter Windows XP mit Delphi5.

Das Problem tritt dann auf, wenn TMenuItem.Caption ein String zugewiesen wird, der eine hochgestellte Zwei ('²') enthält.

Habe mal ein kurzes Beispiel gemacht:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Button1.Caption  := 'a²b'; // => angezeigter Text: a²b
  MenuItem1.Caption := 'a²b'; // => angezeigter Text: a²b(A)
end;

end.
Beim Button ist das Ergebnis der Stringzuweisung wie erwartet, beim MenuItem wird jedoch an die Beschriftung immer das erste Zeichen des zugewiesenen Strings angehängt - in Klammern und als Großbuchstabe.

Ist das ein Bug oder ein Feature?
Habe ich irgendwas falsch eingestellt o.dgl.?

Nersgatt 26. Jun 2012 13:30

AW: TMenuItem.Caption mit '²' im String wird falsch angezeigt
 
Kann ich mit Delphi 2010 und Windows 7 32 Bit auch nachvollziehen - allerdings kann ich mir keinen Reim drauf machen....

Bummi 26. Jun 2012 13:36

AW: TMenuItem.Caption mit '²' im String wird falsch angezeigt
 
Workaround
Delphi-Quellcode:
MenuItem1.Caption := 'a&²b';

Der.Kaktus 26. Jun 2012 13:44

AW: TMenuItem.Caption mit '²' im String wird falsch angezeigt
 
mit D2010 unter XP selbes Problem ist..??????:shock:

Der.Kaktus 26. Jun 2012 13:47

AW: TMenuItem.Caption mit '²' im String wird falsch angezeigt
 
?????

Der.Kaktus 26. Jun 2012 13:48

AW: TMenuItem.Caption mit '²' im String wird falsch angezeigt
 
Zitat:

Zitat von Bummi (Beitrag 1172494)
Workaround
Delphi-Quellcode:
MenuItem1.Caption := 'a&²b';

das steht aber nicht in der Hilfe oder? :-)

Bummi 26. Jun 2012 13:51

AW: TMenuItem.Caption mit '²' im String wird falsch angezeigt
 
nein, ein anderer Weg wäre
Delphi-Quellcode:
Menu.AutoHotkeys:=maManual;
über Autohotkeys des Menuitems funktioniert es nicht

Tinky-Winky 26. Jun 2012 14:05

AW: TMenuItem.Caption mit '²' im String wird falsch angezeigt
 
Beide Workarounds funktionieren einwandfrei, super!
Herzlichen Dank für Eure schnelle Hilfe!

ChrisE 26. Jun 2012 14:07

AW: TMenuItem.Caption mit '²' im String wird falsch angezeigt
 
Zitat:

Zitat von Tinky-Winky (Beitrag 1172490)
Delphi-Quellcode:
  MenuItem1.Caption := 'a²b'; // => angezeigter Text: a²b(A)

Is ja interessant, dass Delphi XE2 sowas macht. D2007 konnte das meines wissens nicht... :shock:

Zitat:

Zitat von Bummi (Beitrag 1172494)
Workaround
Delphi-Quellcode:
MenuItem1.Caption := 'a&²b';

[Klugsch...modus an]
Wäre es nicht besser
Delphi-Quellcode:
MenuItem1.Caption := 'a' + cHotkeyPrefix + '²b';
// Damit kann sich das '&' ändern (Plattform / Zukunft - WhatEver)
Und entfernen per
Delphi-Quellcode:
DerString := StripHotKey(MenuItem1.Caption);
// DerString enthält jetzt nur noch a²b
[Klugsch...modus aus]

Gruß, Chris

Bummi 26. Jun 2012 14:12

AW: TMenuItem.Caption mit '²' im String wird falsch angezeigt
 
@ChrisE

ei sischer dat...


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 Uhr.
Seite 1 von 2  1 2      

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