[R] StringSize -Affichage

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Yle
Niveau 5
Niveau 5
Messages : 167
Enregistré le : mar. 21 avr. 2009 17:22
Localisation : La NORMANDIE -76
Status : Hors ligne

[R] StringSize -Affichage  

#1

Message par Yle »

Bonjour

J'ai extrait d'un programme plus important qq lignes

Code : Tout sélectionner

#include-once
#include <Array.au3>
#include <Stringsize.au3>
#include <Date.au3>
#include <GuiConstantsEx.au3>


global $coefw, $coefh, $width = 800, $height = 600,$nomsall
global $atabcolours[9] = [0x6665fe, 0xffffcd, 0xffc0c0, 0xc0ffc0, 0xc0c0ff, 0xc0c0c0, 0xfeccff, 0xc0d0f0, 0xc0c0ab]
global $message_page2 = "Pour inscrire un joueur ou une équipe, commencez par choisir le type de compétition en cliquant sur une" & _
	" compétition valide (Si écrite en gras, les inscriptions sont ouvertes). " & @CRLF & _
	"Puis validez la compétition en  cliquant sur le bouton ""v"". " & @CRLF & _
	"Selon la compétition choisie, 2 zones vont s'afficher : nom prénom et repas." & @CRLF & _
	"Choisissez le nom du joueur et la prise de repas (oui ou non) et vous validez." & @CRLF & _
	"Si les 2 réponses sont correctes, un tableau récapitulatif va apparaître. Après vérifications, vous ferez disparaître " & _
	"le tableau en cliquant sur la croix en haut à droite. " & @CRLF & _
	"Un nouvel icône ""+"" va s'afficher et si vous cliquez dessus, vous pourrez à nouveau saisir un nouveau joueur." & @crlf & @crlf &  _
	"Dans le cas d'une inscription d'équipe (duo), vous verrez 2 zones ""nom"" s'afficher." & @crlf & _
	"Si vous avez choisi le ""libre x4"", le logiciel vous affichera 4 zones nom et 4 zones repas." & @crlf & _
	"Après validation, en cliquant sur +, vous pourrez saisir une autre équipe." & @crlf & @crlf & _
	"Toutes les inscriptions en libre seront automatiquement contrôlées et refusées si hors réglementation." & @crlf & _
	"Lorsque toutes les inscriptions seront faites pour un type de compétition, vous devez IMPERATIVEMENT cliquer sur ""Valider Inscriptions (DL)"" pour qu'elles soient prises en compte."
$coefw = @desktopwidth / $width
$coefh = @desktopheight / $height
$font="verdana"

$iX2 = int(@DesktopWidth*.5)		; 50%
$iY2 = int(@DesktopHeight*.5)		; 50 %
for $isize2 = 7 to 13
	$msgpage2 = _stringsize($message_page2, $isize2, 400,0, $font, $iX2)	; le rect doit couvrir presque la page en largeur 0,5%
;		_arraydisplay($msgpage2, "-isize=" & $isize2 & " ---$m[3]=" & $msgpage2[3] & " - " & $desktopwidthhh*.5 & "--" & @desktopheight*.8)
	if $msgpage2[3] > $iY2 then		; le rect doit pas exceder 50% de la hauteur
		$isize2 -= 1
		exitloop
	endif
next
$page = guictrlcreatetab(1,1,@DesktopWidth, @desktopheight)
$Inscriptions = guicreate("Les inscriptions ", @desktopwidth, @desktopheight, 1, 1)			;  menu principal

$page2=guictrlcreatetabitem("TEst")															; on crée item donne libre ----------------------------------------------------------------------------------------------------

$ligne200 = guictrlcreatelabel("Choix ""Donne libre"" - date : " & _nowdate(),50,50, 600,30)
guictrlsetfont(-1,10, 800, 4, $font)
guictrlsetcolor(-1, 0x000000)


$menu2 = guictrlcreatelabel("", 10, int(80), $iX2, $iY2)  	; la page infos de la page 2
guictrlsetdata($menu2, $msgpage2[0])
guictrlsetfont($menu2, $isize2, 400, 0, $font)
guictrlsetcolor ($menu2, "0x000000" )   ; 000000 = noir  l'écriture


$combo200=guictrlcreatecombo("Nom joueur ?", +10, $iY2 + 25,250,20)
GUICtrlSetData(-1, "Item 2|Item 3|Item 4|Item 5|Item 6|Item 7|Item 8|Item 9|Item 10")
guictrlsetbkcolor (-1, 0xffff00)
guictrlsetfont(-1,10, 600, 0, $font)

$combo201=guictrlcreatecombo("Repas ?", +260, $iY2 + 25,110,43)
guictrlsetdata(-1,"Non|Oui")
guictrlsetbkcolor (-1, 0xffff00)
guictrlsetfont(-1,10, 600, 0, $font)

guisetstate(@sw_show)

while 1
	$msg = guigetmsg()
	switch $msg
		case $gui_event_close
			guidelete($Inscriptions)
			Exit
	endswitch
;				GUISwitch($Inscriptions,$page4)				; on switche sur la PAGE 0

wend
Mon souci : J'aimerais que mes 2 combobox s'affichent juste derrière message_page2
Si je mets comme position $iY2+25, ca ne fonctionne pas. Si je mets $iY2+200 c'est ok mais ce n'est pas ce que je veux.
Je pense qu'au niveau du paramétrage de la fonction _StringSize, y a qq chose que je fais mal.

QQ peut-il m'aider.
D'avance merci
Modifié en dernier par Yle le jeu. 19 août 2021 09:53, modifié 2 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] StringSize -Affichage

#2

Message par mikell »

2 choses
- Pour définir $isize2 il est préférable de faire une boucle For inverse, dès qu'on a la bonne hauteur on l'attribue à $iY2 et on sort
- pour la position verticale des combos, c'est hauteur de la label + sa position y (ici c'est 80 )
Je l'ai colorée en jaune pour mieux visualiser

#include-once
#include <Array.au3>
#include <Stringsize.au3>
#include <Date.au3>
#include <GuiConstantsEx.au3>


global $coefw, $coefh, $width = 800, $height = 600,$nomsall
global $atabcolours[9] = [0x6665fe, 0xffffcd, 0xffc0c0, 0xc0ffc0, 0xc0c0ff, 0xc0c0c0, 0xfeccff, 0xc0d0f0, 0xc0c0ab]
global $message_page2 = "Pour inscrire un joueur ou une équipe, commencez par choisir le type de compétition en cliquant sur une" & _
   " compétition valide (Si écrite en gras, les inscriptions sont ouvertes). " & @CRLF & _
   "Puis validez la compétition en  cliquant sur le bouton ""v"". " & @CRLF & _
   "Selon la compétition choisie, 2 zones vont s'afficher : nom prénom et repas." & @CRLF & _
   "Choisissez le nom du joueur et la prise de repas (oui ou non) et vous validez." & @CRLF & _
   "Si les 2 réponses sont correctes, un tableau récapitulatif va apparaître. Après vérifications, vous ferez disparaître " & _
   "le tableau en cliquant sur la croix en haut à droite. " & @CRLF & _
   "Un nouvel icône ""+"" va s'afficher et si vous cliquez dessus, vous pourrez à nouveau saisir un nouveau joueur." & @crlf & @crlf &  _
   "Dans le cas d'une inscription d'équipe (duo), vous verrez 2 zones ""nom"" s'afficher." & @crlf & _
   "Si vous avez choisi le ""libre x4"", le logiciel vous affichera 4 zones nom et 4 zones repas." & @crlf & _
   "Après validation, en cliquant sur +, vous pourrez saisir une autre équipe." & @crlf & @crlf & _
   "Toutes les inscriptions en libre seront automatiquement contrôlées et refusées si hors réglementation." & @crlf & _
   "Lorsque toutes les inscriptions seront faites pour un type de compétition, vous devez IMPERATIVEMENT cliquer sur ""Valider Inscriptions (DL)"" pour qu'elles soient prises en compte."
$coefw = @desktopwidth / $width
$coefh = @desktopheight / $height
$font="verdana"

$iX2 = int(@DesktopWidth/2)      ; 50%
$iY2 = int(@DesktopHeight/2)     ; 50 %
for $isize2 = 13 to 7 step -1    ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
   $msgpage2 = _stringsize($message_page2, $isize2, 400,0, $font, $iX2) ; le rect doit couvrir presque la page en largeur 0,5%
   if $msgpage2[3] < $iY2 then   ;<<<<<<<<<<<<<< le rect doit pas exceder 50% de la hauteur
      $iY2 = $msgpage2[3]  ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
      exitloop
   endif
next
$page = guictrlcreatetab(1,1,@DesktopWidth, @desktopheight)
$Inscriptions = guicreate("Les inscriptions ", @desktopwidth, @desktopheight, 1, 1)       ;  menu principal

$page2=guictrlcreatetabitem("TEst")                                           ; on crée item donne libre ----------------------------------------------------------------------------------------------------

$ligne200 = guictrlcreatelabel("Choix ""Donne libre"" - date : " & _nowdate(),50,50, 600,30)
guictrlsetfont(-1,10, 800, 4, $font)
guictrlsetcolor(-1, 0x000000)


$menu2 = guictrlcreatelabel("", 10, int(80), $iX2, $iY2)    ; la page infos de la page 2
guictrlsetdata($menu2, $msgpage2[0])
guictrlsetfont($menu2, $isize2, 400, 0, $font)
guictrlsetcolor ($menu2, "0x000000" )   ; 000000 = noir  l'écriture
guictrlsetbkcolor (-1, 0xffff00)


$combo200=guictrlcreatecombo("Nom joueur ?", +10, $iY2 + 80,250,20)
GUICtrlSetData(-1, "Item 2|Item 3|Item 4|Item 5|Item 6|Item 7|Item 8|Item 9|Item 10")
guictrlsetbkcolor (-1, 0xffff00)
guictrlsetfont(-1,10, 600, 0, $font)

$combo201=guictrlcreatecombo("Repas ?", +270, $iY2 + 80,110,43)
guictrlsetdata(-1,"Non|Oui")
guictrlsetbkcolor (-1, 0xffff00)
guictrlsetfont(-1,10, 600, 0, $font)

guisetstate(@sw_show)

while 1
   $msg = guigetmsg()
   switch $msg
      case $gui_event_close
         guidelete($Inscriptions)
         Exit
   endswitch
;           GUISwitch($Inscriptions,$page4)           ; on switche sur la PAGE 0

wend
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Yle
Niveau 5
Niveau 5
Messages : 167
Enregistré le : mar. 21 avr. 2009 17:22
Localisation : La NORMANDIE -76
Status : Hors ligne

Re: [..] StringSize -Affichage

#3

Message par Yle »

CQFD !
Merci Mikell
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2086
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [R] StringSize -Affichage

#4

Message par TommyDDR »

Concernant StringSize, j'ai eu plusieurs cas où la taille retournée n'était pas bonne (trop petite), donc attention lorsque vous l'utilisez.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [R] StringSize -Affichage

#5

Message par mikell »

C'est pas faux
C'est pour ça que quand je l'utilise, je colore toujours (temporairement) les labels concernées d'une mignonne teinte pastel qui n'abime pas les yeux Image
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre