[R] Aide sur fonction _StringSize()

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

[R] Aide sur fonction _StringSize()

#1

Message 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
Modifié en dernier par Hugues le mer. 09 sept. 2015 14:37, modifié 1 fois.
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

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

#2

Message 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
Cordialement,
TT22
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

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

#3

Message 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:
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

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

#4

Message 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.
Cordialement,
TT22
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

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

#5

Message 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.
Avatar du membre
TT22
Membre émérite
Membre émérite
Messages : 1566
Enregistré le : lun. 18 avr. 2011 15:21
Localisation : La Quatrième Dimension
Status : Hors ligne

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

#6

Message 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
Cordialement,
TT22
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

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

#7

Message 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...
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#8

Message 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
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

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

#9

Message 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!!!
Répondre