2010-11-08 5 views
1

J'utilise Delphi 2009 et j'ai créé un menu contextuel.Étrange menu contextuel numéro

object PopupMenu1: TPopupMenu 
    object lmm1: TMenuItem 
    Caption = 'lm/m'#178 
    end 
end 

dès que j'ai un "²" dans un menu contextuel, elle apparaîtra comme "lm/m² (L)". utiliser maManual pour AutoHotKeys n'aide pas ... il apparaît toujours de la même manière. c'est comme les touches de raccourci, car chaque élément de menu en reçoit un nouveau.

"lm/m² (L)" "m/m² (M)" "am/m² (N)" "bm/m² (O)"

dois-je utiliser « lm/m2 "au lieu de" lm/m² "si je veux que le (L) disparaisse?

utilisé à l'échelle internationale, je m'attendrais toujours à ce que «²» s'affiche correctement.

je vous remercie pour votre aide!

+3

Je ne sais pas que je menus.pas de D2007 parcouru, mais il semble que la VCL est méprendre '²' avec un [octet principal] (http://docwiki.embarcadero.com/VCL/fr/SysUtils.LeadBytes) (procédure imbriquée 'InsertHotkeyFarEastFormat'). –

+1

Je pense que Sertac est sur la bonne voie ici. Quel personnage est exactement mis dans la chaîne? Ceci est une chaîne de caractères de deux octets et vous avez spécifié juste # 178. Je voudrais étudier cet aspect pour voir ce qui se passe. Il vaut également la peine de déboguer à travers la source pour voir ce qui se passe. – mj2008

+0

merci, les gars! J'ai trouvé que TPopupMenu.AutoHotKeys devait être réglé sur maManual. J'avais essayé cela avec l'élément de menu lui-même, mais il devait clairement être dans le TPopupMenu. Peut-être que Sertac pourrait mettre cela comme réponse pour qu'il puisse obtenir les points! –

Répondre

1

est ici la solution i après avoir étudié imaginai/débogage la source des TMenuItem.InternalRethinkHotkeys et TMenuItem.GetAutoHotkeys:

object PopupMenu1: TPopupMenu 
    Left = 184 
    Top = 272 
    object MenuItem1: TMenuItem 
    AutoHotkeys = maManual 
    Caption = 'lm/m'#178 
    end 
end 
0

La propriété AutoHotKeys s'applique aux raccourcis clavier lorsque la touche ALT est enfoncée. Ce que vous voyez est la propriété TMenuItem.ShortCut à la place à la place. Assurez-vous qu'il est réglé sur scNone pour tout élément dont vous ne voulez pas que "(#)" s'affiche.

+0

merci pour votre réponse, Rémy. vous faites beaucoup de bon travail dans le cadre de TeamB - merci. TMenuItem.ShortCut est défini sur scNone. en essayant de savoir ce qui se passait, j'ai créé une application de test simple et appelé la méthode PopupMenu.Popup. –

+0

Ensuite, il vous suffira de parcourir le code source de la VCL pour savoir d'où le texte supplémentaire est affiché. –