Page 1 sur 2

Problème d'affichage du symbole Euro € (AltGr+E) - résolu ?

Publié : jeu. 13/juil./2023 21:58
par cage
Bonsoir a tous,

Je rencontre un petit soucis pour faire apparaitre le symbole Euro € dans les menus d'une application qui fait 8095 lignes, indiqué par le compilateur.

Les menus sont très chargés (+ de mille menus).

Le symbole Euro est remplacé par un espace alors que si j'utilise les symboles dollar $ ou Livre £, ils sont bien affichés.

J'ai essayé avec plein de symboles exotiques, ils s'affichent tous correctement.

Je n'ai pas réussi a créer une application qui démontre la chose, mais le problème est bien là.

Avez-vous déjà rencontré ce soucis ?

Une idée du pourquoi de la chose.

Merci,
cage

Re: Problème d'affichage du symbole Euro € (AltGr+E)

Publié : ven. 14/juil./2023 10:08
par Marc56
Bonjour,

Le truc de base ? Fonte qui ne contient pas le symbole € ?

Ex: Courier ne contient pas €, mais Courier New oui

PS. 1000 menus ?
:wink:

Re: Problème d'affichage du symbole Euro € (AltGr+E)

Publié : ven. 14/juil./2023 10:10
par Bmld76
Bonjour,

Sur MacOs, J'utilise le code € sans difficulté, donne un morceaux de code pour tester.

Re: Problème d'affichage du symbole Euro € (AltGr+E)

Publié : ven. 14/juil./2023 15:56
par cage
Bonjour,
@ Bmld76: Je n'arrive pas a reproduire le problème dans un code exemple.

@Marc56: Je pensais que tu avais mis le doigt sur le problème, mais non.
Je ne modifie pas la fonte par défaut de l'application, alors ça devrait fonctionner.
Petite question, comment savoir quelle fonte est utilisée par les menus de l'application et comment la modifier ?
Je précise que si je crée une application toute simple avec un menu, le symbole Euro s'affiche bien.
Donc, par défaut, PB se lance avec une fonte qui accepte le symbole Euro.

Dans l'application en question, j'ai environ 9000 menus.
Cette application liste entre autre chaque nom de série disponible et les affiche dans des sous menus correspondants a la première lettre du titre.
Une image est plus parlante qu'un grand discours.
La playlist affichée date un peu et me sert a peaufiner l'application.
cage
Image

Image

Image

Re: Problème d'affichage du symbole Euro € (AltGr+E)

Publié : ven. 14/juil./2023 16:35
par Marc56
Hello,

J'ai envisagé que ce soit #PB_Menu_ModernLook qui pose un problème, mais non, € s'affiche bien.
Tu créé des 9000 menus à l'avance ou dynamiquement ?
Si tu les créé tous à l'avance il y a peut-être un problème de mémoire ?

PS. On peut changer la fonte par défaut par exemple avec:

Code : Tout sélectionner

SetGadgetFont(#PB_Default, FontID(LoadFont(#PB_Any, "Consolas", 10)))
Mais ça ne change pas la fonte des menus. :|

Re: Problème d'affichage du symbole Euro € (AltGr+E)

Publié : ven. 14/juil./2023 17:02
par cage
Tous les menus sont créés dynamiquement car je ne sais pas les créer a l'avance.
J'utilise une procédure pour créer les menus, ainsi, si je change de playlist, je rappelle la procédure pour reconstruire le menu.
Un bout du code que j'utilise

Code : Tout sélectionner

#WinApp = 60

Enumeration Menus
  #MenuApp
  #MenuPopup
  #MenuTray
EndEnumeration

Procedure construire_application_main_menu()
  If IsMenu(#MenuApp)
    FreeMenu(#MenuApp)
  EndIf
  
  If CreateImageMenu(#MenuApp, WindowID(#WinApp), #PB_Menu_ModernLook)
    ; Crétion des menus dynamiquement
    ; Lecture des Map (NewMap) et des List (NewList) créées lors du parsing de la playlist concernée
  EndIf
EndProcedure

Procedure construire_application_aide()
EndProcedure

Procedure construire_application_interface()
EndProcedure

Procedure construire_application_tray_menu()
EndProcedure

Re: Problème d'affichage du symbole Euro € (AltGr+E)

Publié : ven. 14/juil./2023 17:08
par boddhi
Salut,
cage a écrit : Je ne modifie pas la fonte par défaut de l'application, alors ça devrait fonctionner.
La fonte par défaut sous Win10 (version indiquée dans ta signature) est SEGOE UI, laquelle gère les caractères UNICODE dont la valeur de codage n'excède pas 65 535. Le symbole € a, lui, une valeur de 8364.
As-tu essayé la séquence "ALT GR + E" (dans un stringgadget créé dans ta fenêtre pour l'occasion, par exemple) ou la fonction Chr(8364) pour voir si le symbole € s'affichait ou non ?

Code : Tout sélectionner

OpenWindow(0,100,100,200,200,"Test €",#PB_Window_SystemMenu)
StringGadget(0,20,20,160,24,"€"+Chr(8364))
CreateMenu(0,WindowID(0))
MenuTitle("Test")
MenuItem(0,"Sous-menu 1 : €")
MenuItem(1,"Sous-menu 2 : "+Chr(8364))
Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow

Re: Problème d'affichage du symbole Euro € (AltGr+E)

Publié : ven. 14/juil./2023 17:36
par cage
@boddhi:
J'utilisais bien "ALT GR + E" et le symbole Euro apparaissait bien dans le code mais pas dans l'application.
Je viens d'essayer Chr(8364), et miracle (je suis né pas loin de Lourdes) le symbole Euro apparait bien dans les menus.
Il doit bien y avoir une explication au phénomène, mais je ne vois pas bien lequel.
Un grand merci a toi d'avoir trouvé une/la solution.
cage

Re: Problème d'affichage du symbole Euro € (AltGr+E)

Publié : ven. 14/juil./2023 17:46
par boddhi
cage a écrit : J'utilisais bien "ALT GR + E" et le symbole Euro apparaissait bien dans le code mais pas dans l'application.
As-tu essayé mon code ? Si oui, est-ce que tous les € s'affichent correctement (et dans le stringgadget et dans les menus) et as-tu essayé la combinaison de touches dans le stringgadget ?

Re: Problème d'affichage du symbole Euro € (AltGr+E)

Publié : ven. 14/juil./2023 18:00
par cage
Ton code de test fonctionne parfaitement et le symbole Euro est bien affiché dans les 2 menus et dans le stringgadget.
Si je tape "ALT GR + E" dans le stringgadget, le symbole Euro s'affiche bien.

Je me cite:
Je précise que si je crée une application toute simple avec un menu, le symbole Euro s'affiche bien.
Donc, par défaut, PB se lance avec une fonte qui accepte le symbole Euro.
Pour moi, le problème viendrait de la taille du menu et/ou du fait qu'il est créé de manière dynamique.

Dans tous les cas, l'utilisation de Chr(8364) règle le problème et je t'en remercie.
cage

Re: Problème d'affichage du symbole Euro € (AltGr+E)

Publié : ven. 14/juil./2023 23:49
par boddhi
Very strange comme diraient nos amis anglophones.

Taille ou création dynamique du menu, en théorie, je ne vois pas ce qui empêcherait l'utilisation de ce caractère...
As-tu fait le test avec un autre caractère du même style ? Genre "•" (ALT + 7 - Chr(8226))

Note bienveillante : Si tu considères que ton pb est résolu, n'hésite pas à l'indiquer dans le titre de ton 1er post :wink:

Re: Problème d'affichage du symbole Euro € (AltGr+E)

Publié : sam. 15/juil./2023 8:44
par cage
Vraiment très étrange, je confirme.
As-tu fait le test avec un autre caractère du même style ? Genre "•" (ALT + 7 - Chr(8226))
ALT + 7 affiche bien "•" dans le code mais pas dans les menus.
Par contre, Chr(8226) affiche bien le "•" dans les menus.
Je fais marquer résolu mon premier post malgré le fait que la source du problème reste inconnue.
Encore merci a toi.
cage

Re: Problème d'affichage du symbole Euro € (AltGr+E) - résolu ?

Publié : sam. 15/juil./2023 8:51
par boddhi
Tu peux poster juste la ligne de code qui créé ton item de menu ? Histoire de voir comment tu construis ta chaîne de caractères...

Re: Problème d'affichage du symbole Euro € (AltGr+E) - résolu ?

Publié : sam. 15/juil./2023 9:05
par cage

Code : Tout sélectionner

Global Euro$ = Chr(8364)

If CreateImageMenu(#MenuApp, WindowID(#WinApp), #PB_Menu_ModernLook)
  OpenSubMenu("Utiliser le fournisseur "+Euro$, IconEuro) ; fonctionne
  OpenSubMenu("Utiliser le fournisseur €", IconEuro) ; ne fonctionne pas
  CloseSubMenu()
EndIf

Re: Problème d'affichage du symbole Euro € (AltGr+E) - résolu ?

Publié : sam. 15/juil./2023 9:33
par Marc56
Avec ça (exemple complet), j'ai bien les deux signes €
PB 6.02 LTS Windows 10 x64 compilateur ASM ou C

Code : Tout sélectionner

Global Euro$ = Chr(8364)

OpenWindow(0, 0, 0, 300, 300, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

If CreateImageMenu(1, WindowID(0), #PB_Menu_ModernLook)
    MenuTitle("Test")
    OpenSubMenu("Utiliser le fournisseur " + Euro$, IconEuro) ; fonctionne
    OpenSubMenu("Utiliser le fournisseur €", IconEuro)        ; ne fonctionne pas
    CloseSubMenu()
EndIf

Repeat : Until WaitWindowEvent(0) = #PB_Event_CloseWindow