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 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...

ChrisE 26. Jun 2012 14:15

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

Zitat von Bummi (Beitrag 1172507)
@ChrisE

ei sischer dat...

OK, war zuviel des guten :-D
Nachricht is angekommen ;-)

Nichts für ungut :cheers:

Gruß, Chris

Bummi 26. Jun 2012 14:20

AW: TMenuItem.Caption mit '²' im String wird falsch angezeigt
 
gar nicht, passt schon ....:cheers::cheers:

Nersgatt 26. Jun 2012 14:24

AW: TMenuItem.Caption mit '²' im String wird falsch angezeigt
 
Ich glaube, das gäbe extrem viele lustig aussehende Programme, wenn MS mal einfach spaßeshalber den Hotkeyprefix auf # ändert... :stupid:

ChrisE 26. Jun 2012 14:29

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

Zitat von Bummi (Beitrag 1172509)
gar nicht, passt schon ....:cheers::cheers:

OK :-D Dann noch eins :cheers:

Zitat:

Zitat von Nersgatt (Beitrag 1172510)
Ich glaube, das gäbe extrem viele lustig aussehende Programme, wenn MS mal einfach spaßeshalber den Hotkeyprefix auf # ändert... :stupid:

LOL - Ja, das stimmt wohl. Aber wenn man plattformübergreifend programmiert kann dass doch jetzt schon passieren, oder?

Gruß, Chris


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