Page 1 sur 1

[R] Aide sur fonction _StringSize()

Posté : mer. 09 sept. 2015 09:50
par Hugues
Bonjour,

Je développe une application d'affichage de données. J'ai un GUI qui s'adapte à la taille de l'écran (Ecran 15" à 55").

Dans ce GUI j'ai des Labels, ils s'adaptent bien en largeur et hauteur, mais pas la police, ainsi que le texte de ma StatusBar.

J'ai vu qu'il existait la fonction _StringSize() de Melba23, mais je n'arrive pas à l'adapter à mon application...

J'ai regardé les exemples fournis avec la fonction, mais le problème est que le gui se redimensionne et moi je ne veux pas.

Ci joint mon code:

Merci par avance pour votre aide.
► Afficher le texte

Re: [..] Aide sur fonction _StringSize()

Posté : mer. 09 sept. 2015 11:13
par TT22
Est-ce que cette petite fonction qui adapte la taille de la police au control résoudrait ton problème ?

Code : Tout sélectionner

Func _FontAdaptSize($Gui, $Control)
    $Pos = ControlGetPos($Gui, "", $Control)
    Return GUICtrlSetFont($Control, $Pos[3] - ($Pos[3]*0.4))
EndFunc
Voilà un petit exemple :
► Afficher le texte

Re: [..] Aide sur fonction _StringSize()

Posté : mer. 09 sept. 2015 11:31
par Hugues
Non ça ne fonctionne pas, car sur mon écran PC c'est OK mais sur un plus grand ça ne fonctionne pas.... :cry:

Re: [..] Aide sur fonction _StringSize()

Posté : mer. 09 sept. 2015 11:58
par TT22
Qu'entends-tu par "ça ne fonctionne pas" ?
Quel est le problème ?

Edit : Ok désolé je viens de comprendre, tu veux t'adapter à la largeur et pas à la hauteur :roll:
Essaye ça :
► Afficher le texte
Je l'ai testé sous plusieurs résolutions d'écran et ça fonctionne.

Re: [..] Aide sur fonction _StringSize()

Posté : mer. 09 sept. 2015 12:19
par Hugues
Comme tu peux le voir dans mon code, mes labels font soit la largeur de l'écran, soit la moitié ^^.

J'ai créé mes labels avec un gui de base en 800x600, donc forcément ça peine lorsque l'on change de résolution ^^.

Mon "rêve" serait que quelque soit l'écran la proportion reste toujours la même ^^, que le texte soit au maxi de sa taille en hauteur et largeur.

Re: [..] Aide sur fonction _StringSize()

Posté : mer. 09 sept. 2015 12:49
par TT22
Cette solution fonctionne, par contre j'ai du enlever le saut de ligne qui créait des problèmes de calcul de taille :?
► Afficher le texte

Re: [..] Aide sur fonction _StringSize()

Posté : mer. 09 sept. 2015 13:27
par Hugues
Yes, au niveau des labels c'est impeccable MERCI!

Par contre j'ai pas mal de clignotements au niveau de l'affichage et c'est pas très agréable...

Re: [..] Aide sur fonction _StringSize()

Posté : mer. 09 sept. 2015 14:22
par mikell
Modifie la fonction _ScreenAdaptation() comme ça

Code : Tout sélectionner

Func _ScreenAdaptation()
    $WorkAera = _GetWorkArea()
    Local $aGuiPos = WinGetPos($MainGUI)
    If $aGuiPos[0] <> $WorkAera[0] Or $aGuiPos[1] <> $WorkAera[1] Or $aGuiPos[2] <> $WorkAera[4] Or $aGuiPos[3] <> $WorkAera[5] Then WinMove($MainGUI, "", $WorkAera[0], $WorkAera[1], $WorkAera[4], $WorkAera[5])
    ; Adaptation des tailles de police des controls
    _SetFontSizeForControl($MainGUI, $Label1, "Arial", 400, 0)
    _SetFontSizeForControl($MainGUI, $Label2, "Arial", 400, 0)
    Return $WorkAera
EndFunc   ;==>_ScreenAdaptation
 
Supprime le AdlibRegister et n'exécute _ScreenAdaptation() qu'une fois juste avant le While

Re: [..] Aide sur fonction _StringSize()

Posté : mer. 09 sept. 2015 14:36
par Hugues
Impeccable, merci. Je perd la fonction de redimensionnement automatique si on bouge la barre de tâche, mais bon ce n'est pas grave.

Sujet résolu, un grand merci à tous!!!