Page 3 sur 4
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : ven. 01 mai 2020 18:29
par Anthony
mikell a écrit : ↑ven. 01 mai 2020 17:58
Ce qui marche très bien chez moi (même avec le AdlibRegister) c'est ça
Reste à le tester avec w7 et avec les OS ultramodernes
çà me plait bien
Grosse mise à jour voir Post #1, j'ai tout intégré et mis à jour la fonction _GUICtrlCreateGradient, es-ce aussi bien que la fonction de walkson
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : ven. 01 mai 2020 18:58
par mikell
Tu devrais pas te précipiter comme ça, et attendre les tests
Par exemple, avec la nouvelle fonction _GUICtrlCreateGradient, j'ai le gros bouton de la gui1 qui disparait si on déplace ou redimensionne la gui
à part ça ya plus rien qui flicke
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : ven. 01 mai 2020 19:07
par Anthony
mikell a écrit : ↑ven. 01 mai 2020 18:58
Tu devrais pas te précipiter comme ça, et attendre les tests
Par exemple, avec la nouvelle fonction _GUICtrlCreateGradient, j'ai le gros bouton de la gui1 qui disparait si on déplace ou redimensionne la gui
à part ça ya plus rien qui flicke
oups, je pensais que c'était bon... désolé, alors j'attend vos retours
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 14h45
Posté : ven. 01 mai 2020 22:40
par JoeBar
Anthony a écrit : ↑ven. 01 mai 2020 14:39
JoeBar a écrit : ↑jeu. 30 avr. 2020 10:11
Salut, il est sympa ton UDF, mais à chaque actualisation de l'heure, ça flicke ...
Il est très probable que votre OS soit Win 7
Cette mise à jour règle t'elle le problème ? (voir post #1)
Mise à jour, suppression de l'ancienne version (AdlibRegister) de l'heure et mise à jour avec (_Timer_SetTimer), merci walkson
Non je suis sur W10, mais avec ton patch, ça a disparu
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : ven. 01 mai 2020 23:18
par Anthony
JoeBar a écrit : ↑ven. 01 mai 2020 22:40
Anthony a écrit : ↑ven. 01 mai 2020 14:39
Il est très probable que votre OS soit Win 7
Cette mise à jour règle t'elle le problème ? (voir post #1)
Mise à jour, suppression de l'ancienne version (AdlibRegister) de l'heure et mise à jour avec (_Timer_SetTimer), merci walkson
Non je suis sur W10, mais avec ton patch, ça a disparu
Moi aussi Win X, es-ce que vous avez (juste pour info) un clignotement ou un écrasement de la date en modifiant dans la démo:
Code : Tout sélectionner
$hGUI_1_Label_1 = _GUICtrlStatusBarEx_CreateControl($hGUI_1,6,"7","Label1",42,0,170,0,"SIZEABLE_LEFT",$SS_CENTER+$SS_CENTERIMAGE,"",$GUI_BKCOLOR_TRANSPARENT,"8.5|$FW_NORMAL|$GUI_FONTNORMAL|Courier New|0x0000FF")
Et dans l'UDF:
Code : Tout sélectionner
; GUICtrlSetData( $ClockStatusBarEx[$i][0], _DateTimeFormat( _NowCalc(), $ClockStatusBarEx[$i][1]))
$new_heure = _DateTimeFormat( _NowCalc(), $ClockStatusBarEx[$i][1])
ControlSetText($MultiStatusBarEx[$i][0], "", $ClockStatusBarEx[$i][0], $new_heure)
- ControlSetText.jpg (4.32 Kio) Vu 19986 fois
ou comme çà
Code : Tout sélectionner
GUICtrlSetData( $ClockStatusBarEx[$i][0], _DateTimeFormat( _NowCalc(), $ClockStatusBarEx[$i][1]))
; $new_heure = _DateTimeFormat( _NowCalc(), $ClockStatusBarEx[$i][1])
; ControlSetText($MultiStatusBarEx[$i][0], "", $ClockStatusBarEx[$i][0], $new_heure)
- GUICtrlSetData.jpg (4.27 Kio) Vu 19986 fois
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : sam. 02 mai 2020 15:30
par walkson
Bonjour,
Je viens de tester l'UDF et tout fonctionne normalement (pas de scintillement ou autre)
Par contre, il faudrait préciser que tous les contrôles sur la GUI doivent se situer sous les _GUICtrlStatusBarEx_CreateControl() et autres, sinon ils ne sont pas accessibles !
J'ai vu qu'il y a de nouvelles fonctions mais je ne suis pas certain de leur utilité... Proposition:
; #FUNCTION#=====================================================================================================================; Author ........: Anthony Baillou; Modified.......: Anthony Baillou;; Name ..........: _GUICtrlStatusBarEx_CreateFunc; Description ...: Ajoute une fonction à un objet; Syntax ........: _GUICtrlStatusBarEx_CreateFunc( $id_Ctrl, $IndexControl, $iState); Parameters ....: $id_Ctrl - Handle du contrôle.; $IndexFunc - Index de la fonction.1 = clock, 2 = progressbar; $iState - Options de la fonction.; Clock..........: $id_Ctrl, 1, [$iState]; [0] = Affiche une date et/ou une heure.; S'il y a une partie de date, l'afficher comme une date courte.; S'il y a une partie d'une heure, l'afficher comme une heure longue.; Si présent, les deux parties sont affichées.; [1] = Affiche une date en utilisant la date au format long spécifié dans les paramètres régionaux de votre ordinateur.; [2] = Affiche une date en utilisant la date au format court spécifié dans les paramètres régionaux de votre ordinateur.; [3] = Affiche une heure en utilisant l'heure au format spécifié dans les paramètres régionaux de votre ordinateur.; [4] = Affiche une heure en utilisant le format 24 heures (hh:mm).; [5] = Affiche une heure en utilisant le format 24 heures (hh:mm:ss).; ProgressBar.........: $id_Ctrl, 2, [$iState]; $iState = $PBM_NORMAL - normal state (green); $iState = $PBM_ERROR - error state (red); $iState = $PBM_PAUSED - paused style (yellow); ===============================================================================================================================Func _GUICtrlStatusBarEx_CreateFunc
( $id_Ctrl="", $IndexFunc="", $iState="") If $IndexFunc < 1 Or $IndexFunc > 1 Then Return SetError(1) Switch $IndexFunc Case 1 Local $avar[1][2] = [[$id_Ctrl, $iState]] _ArrayAdd( $ClockStatusBarEx, $avar) If UBound($ClockStatusBarEx, 1) = 1 Then _Timer_SetTimer( $MultiStatusBarEx[0][0], 1000, "_UpdateStatusBarClockEx") OnAutoItExitRegister
( "_GUICtrlStatusBarEx_Exit" ) EndIf Case 2 GUICtrlSendMsg($id_Ctrl, $PBM_SETSTATE, $iState, 0) EndSwitchEndFunc
Au moins $IndexFunc aura une utilité
Par contre les entêtes des fonctions ne sont pas à jour, voir fausse comme
$SetBackGroundEx - [optional] "StartColor|EndColor|StatusBarColor". Default is "".
dans _GUICtrlStatusBarEx_Create()
si $SetBackGroundEx n'est pas renseigné, il y a bug !!!
N'oubliez pas que ceux qui utiliseront votre UDF se baseront sur les entêtes ! (et peut être vous même...)
Il manque sérieusement un bonne gestion d'erreurs comme
Func _GUICtrlStatusBarEx_Create
( $hWnd, $SetPartsEx, $SetPartsHeightEx, $SetBackGroundEx) If Not IsHWnd($hWnd) Then Return SetError(1,0,MsgBox(16,"Error",@ScriptLineNumber)) If $SetPartsEx = "" or $SetPartsHeightEx = "" Then Return SetError(1,0,MsgBox(16,"Error",@ScriptLineNumber)) $SetBackGroundEx = StringSplit( $SetBackGroundEx, "|") If Not IsArray($SetBackGroundEx) Or $SetBackGroundEx[0] < 3 Then Return SetError(1,0,MsgBox(16,"Error",@ScriptLineNumber))etc
...............
J'ai envoyé un mail au Premier Ministre pour maintenir le confinement jusqu'à la fin juin pour que vous puissiez finir votre UDF
Une p'tit pensée pour Mikell
viewtopic.php?f=3&t=13392&p=93696&hilit=mikell#p93696
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : dim. 03 mai 2020 14:17
par Anthony
OK je suis dessus, dis-moi walkson,
les variables sont à l'axe:
X=0
Y=0
Le problème que je rencontre est que 0 est considéré comme
Code : Tout sélectionner
If $nX = "" Or $nY = "" Or $nWidth = "" Or $nHeight = "" Then Return SetError(1,0,MsgBox(16,"Error",@ScriptLineNumber))
Idem pour:
Code : Tout sélectionner
If Not $nX Or Not $nY Or Not $nWidth Or Not $nHeight Then Return SetError(1,0,MsgBox(16,"Error",@ScriptLineNumber))
PS: Edouard Philippe t'as entendu tu as le bras long, on est bon et pour l'instant jusqu'au 24 juillet 2020
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : dim. 03 mai 2020 16:34
par walkson
Je reconnais que je me mélange un peu les pinceaux entre une variable nulle et une variable vide.
L'idéal est de tester
Global $nb = 1essai
(0,0,0,0);1essai
("","","","");2essai
("0","0","0","0");3$A = Number(0)essai
($A,$A,$A,$A);4$A = Number("0")essai
($A,$A,$A,$A);5$A = "a"essai
($A,$A,$A,$A);6$A = "1"essai
($A,$A,$A,$A);7Local $Bessai
($B,$B,$B,$B);8Func essai
($nX,$nY,$nWidth,$nHeight) ConsoleWrite("Test " & $nb & @TAB & VarGetType($nX) & @CRLF) If $nX = "" Or $nY = "" Or $nWidth = "" Or $nHeight = "" Then ConsoleWrite("Test " & $nb & @TAB & @ScriptLineNumber & @CRLF) If $nX = 0 Or $nY = 0 Or $nWidth = 0 Or $nHeight = 0 Then ConsoleWrite("Test " & $nb & @TAB & @ScriptLineNumber & @CRLF) If $nX == 0 Or $nY == 0 Or $nWidth == 0 Or $nHeight == 0 Then ConsoleWrite("Test " & $nb & @TAB & @ScriptLineNumber & @CRLF) If Not $nX Or Not $nY Or Not $nWidth Or Not $nHeight Then ConsoleWrite("Test " & $nb & @TAB & @ScriptLineNumber & @CRLF) If Not Number($nX) Or Not Number($nY) Or Not Number($nWidth) Or Not Number($nHeight) Then ConsoleWrite("Test " & $nb & @TAB & @ScriptLineNumber & @CRLF) ConsoleWrite("=============================" & @CRLF) $nb += 1EndFunc
avec $A = "" VarGetType($A) renvoie String et avec $A = 0 VarGetType($A) renvoie Int32. Ce peut être un moyen de différencier la variable mais Michel (ou d'autres) aura de meilleurs idées que moi
Si c'est pour une fonction et que le 0 est accepté dans un des critères, le plus simple est Func essai($nX = 0,$nY = 0) mais là, je suppute....
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : dim. 03 mai 2020 17:08
par mikell
Non Vincent tu as raison
Si la fonction attend une valeur numérique, il faut lui fournir une valeur numérique. Et des coordonnées
sont des valeurs numériques
Le type des variables doit être respecté épi voilà
Le problème c'est que souvent on fait du stayle en laissant AutoIt faire le boulot d'interprétation, ça peut marcher mais ce n'est pas de bonne pratique
"If not $x " c'est pour du booléen (true/false ou 1/0) , et pour du numérique, c'est "If $x = 0 "
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : dim. 03 mai 2020 18:44
par Anthony
Bon bah je sèche, $iState = 0 et c'est un nombre
Code : Tout sélectionner
_GUICtrlStatusBarEx_CreateFunc( $hGUI_1_Label_1, 1, 0)
Func _GUICtrlStatusBarEx_CreateFunc( $id_Ctrl, $IndexFunc, $iState)
If Not Number($id_Ctrl) Then Return SetError(1,0,MsgBox(16,"Error",@ScriptLineNumber)) ; Ligne 293
If Not Number($iState) Then Return SetError(1,0,MsgBox(16,"Error",@ScriptLineNumber)) ; Ligne 294
- Error.jpg (3.73 Kio) Vu 19919 fois
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : dim. 03 mai 2020 18:54
par mikell
Bin oui, quoi, c'est normal...
If Not Number($iState) Then Return SetError
c'est comme si tu mettais
If True Then Return SetError
et Autoit, pas contrariant, il fait ce que tu lui demandes..
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : dim. 03 mai 2020 19:03
par Anthony
çà fume, où sont les clef... dans ta main cheri
Donc là on est bon
Code : Tout sélectionner
If Not Number($id_Ctrl>= 0) Or Not Number($iState >= 0) Then Return SetError(1,0,MsgBox(16,"Error",@ScriptLineNumber))
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : dim. 03 mai 2020 19:06
par mikell
Mais aaaaattends.... par hasard tu ne chercherais pas à vérifier si $iState est un nombre ou pas ?
Si c'est le cas, il faut utiliser
IsNumber
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : dim. 03 mai 2020 19:10
par Anthony
Si, si merci j'allais oublier
Code : Tout sélectionner
If IsNumber($id_Ctrl>= 0) Or IsNumber($iState >= 0) Then Return SetError(1,0,MsgBox(16,"Error",@ScriptLineNumber))
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : dim. 03 mai 2020 19:14
par mikell
Tin ! mélange pas tout
If Not IsNumber($id_Ctrl) Or Not IsNumber($iState) Then Return SetError(1,0,MsgBox(16,"Error",@ScriptLineNumber))
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : dim. 03 mai 2020 19:22
par Anthony
Merci, je vais me faire une pause café
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : dim. 03 mai 2020 19:26
par jchd
D'un autre côté et quand on sait ce qu'on fait on peut laisser agir la plupart des conversion natives d'AutoIt qui sont plus véloces que toute périphrase en code.
Code : Tout sélectionner
Local $a = [0, 0.0, "", "0", "0.0", Ptr(0), False, Null, Default]
ConsoleWrite("Type" & @TAB & "Value" & @TAB & @TAB & "0" & @TAB & "0.0" & @TAB & '""' & @TAB & '"0"' & @TAB & '"0.0"' & @TAB & "Ptr(0)" & @TAB & "False" & @TAB & "Null" & @TAB & "Default" & @LF)
For $i = 0 To UBound($a) - 1
ConsoleWrite(VarGetType($a[$i]) & @TAB & StringFormat("%-8s", $a[$i]))
For $j = 0 To $i
ConsoleWrite(@TAB & ($a[$i] = $a[$j]))
Next
ConsoleWrite(@LF)
Next
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : dim. 03 mai 2020 19:48
par walkson
petite remarque en passant
Dans le cas présent, on ne contrôle pas un nombre mais un Handle. C'est pas pareil
Faut visiter tous les "Is...."
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 03/05/2020, 19h45
Posté : dim. 03 mai 2020 19:55
par Anthony
J'ai mis à jour, le post #1 (03/05/2020, 19h45)
Un Handle ou un ID ?
Je deviens fou
je ne touche rien pour l'instant, je comprend plus
Re: [UDF] GuiStatusBar facile avec plusieurs GUI (GuiStatusBarEx.au3) update 01/05/2020, 18h30
Posté : dim. 03 mai 2020 21:32
par mikell
jchd a écrit : ↑dim. 03 mai 2020 19:26quand on sait ce qu'on fait on peut laisser agir la plupart des conversion natives d'AutoIt qui sont plus véloces que toute périphrase en code
Quand on sait ce qu'on fait, oui
Parce que sinon, au mieux on n'apprend même pas les bases et au pire on n'écrit que des conneries, et si en plus on pratique ce genre de frivolité dans le cadre d'une gestion d'erreur...