[R] Problème de GUI (bouton qui lag)

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
SurPriseS
Niveau 6
Niveau 6
Messages : 289
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

[R] Problème de GUI (bouton qui lag)

#1

Message par SurPriseS »

Bonjours a tous,
Alors sa fait quelques temps que je joue un peu avec autoit (logiciel que je trouve vraiment intéressant surtout pour tout ce qui est gestion réseau). Bref je débute, et surtout avec le GUI et là je ne comprend pas trop le problème ...
Le code si dessous et celui de mon script, il permettra de calculer la durée de connexion sur un des cyber de la boite et donc le tarif.
Il y'a juste la base (toute les fonctions sont pas implémenter et le code est pas encore nettoyer ;)).

Bref le problème : Il faut cliquer plusieurs fois sur le bouton start/stop pour qu'il prennent enfin l'action en compte ... Je pense que l'erreur est au niveau de la boucle while mais je comprend pas trop le problème :\

Voila, je vous remercie d'avance si vous avez une solution ;)

Code : Tout sélectionner

#include <GUIConstants>
#include <date>
;variable
$hinput1 = 0
$hinput2 = 0
$hinput3 = 0
$hinput4 = 0
$binput1 = "Start"
$binput2 = "Start"
$binput3 = "Start"
$binput4 = "Start"

; == GUI generated with Koda ==
$Form1 = GUICreate("Calcul", 591, 238, 275, 125)
$Input1 = GUICtrlCreateInput($hinput1, 152, 40, 121, 21, -1,$WS_EX_CLIENTEDGE)
$Input2 = GUICtrlCreateInput($hinput2, 152, 72, 121, 21, -1,$WS_EX_CLIENTEDGE)
$Input3 = GUICtrlCreateInput($hinput3, 152, 104, 121, 21, -1,$WS_EX_CLIENTEDGE)
$Input4 = GUICtrlCreateInput($hinput4, 152, 136, 121, 21, -1,$WS_EX_CLIENTEDGE)
$Button1 = GUICtrlCreateButton($binput1, 416, 40, 59, 17)
$Button2 = GUICtrlCreateButton($binput2, 416, 72, 59, 17)
$Button3 = GUICtrlCreateButton($binput3, 416, 104, 59, 17)
$Button4 = GUICtrlCreateButton($binput4, 416, 136, 59, 17)
GUICtrlCreateLabel("Temps :", 176, 16, 42, 17)
$Input5 = GUICtrlCreateInput("0", 288, 40, 121, 21, -1, $WS_EX_CLIENTEDGE)
$Input6 = GUICtrlCreateInput("0", 288, 72, 121, 21, -1, $WS_EX_CLIENTEDGE)
$Input7 = GUICtrlCreateInput("0", 288, 104, 121, 21, -1, $WS_EX_CLIENTEDGE)
$Input8 = GUICtrlCreateInput("0", 288, 136, 121, 21, -1, $WS_EX_CLIENTEDGE)
GUICtrlCreateLabel("Nombres d'impréssions :", 288, 16, 117, 17)
GUICtrlCreateLabel("Cyber 1", 104, 40, 40, 17)
GUICtrlCreateLabel("Cyber 2", 104, 72, 40, 17)
GUICtrlCreateLabel("Cyber 3", 104, 104, 40, 17)
GUICtrlCreateLabel("Cyber 4", 104, 136, 40, 17)
$Group1 = GUICtrlCreateGroup("Tarifs", 0, 32, 97, 129)
GUICtrlCreateLabel("1/4h = 75c", 8, 48, 57, 17)
GUICtrlCreateLabel("20min = 1€", 8, 64, 56, 17)
GUICtrlCreateLabel("30min = 1.5€", 8, 80, 65, 17)
GUICtrlCreateLabel("1h = 3€", 8, 96, 40, 17)
GUICtrlCreateLabel("Impression = 20c", 8, 112, 84, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button5 = GUICtrlCreateButton("Calcul", 504, 40, 59, 17)
$Button7 = GUICtrlCreateButton("Calcul", 504, 72, 59, 17)
$Button8 = GUICtrlCreateButton("Calcul", 504, 104, 59, 17)
$Button6 = GUICtrlCreateButton("Calcul", 504, 136, 59, 17)
$Input9 = GUICtrlCreateInput("0", 504, 184, 65, 21, -1, $WS_EX_CLIENTEDGE)
GUICtrlCreateLabel("A payer : ", 448, 184, 49, 17)
GUISetState(@SW_SHOW)
While 1
    $msg = GuiGetMsg()
    ;------------------------------------------------------------START
    if $Button1 = GuiGetMsg() & $binput1 = "start" then
        $hinput1 = _DateTimeFormat( _NowCalc(),3)
        GUICtrlSetData($Input1,$hinput1)
        $binput1 = "Stop"
        GUICtrlSetData($Button1,$binput1)   
    EndIf
    if $Button2 = GuiGetMsg() & $binput2 = "start" then
        $hinput2 = _DateTimeFormat( _NowCalc(),3)
        GUICtrlSetData($Input2,$hinput2)
        $binput2 = "Stop"
        GUICtrlSetData($Button2,$binput2)
    EndIf
    if $Button3 = GuiGetMsg() & $binput3 = "start" then
        $hinput3 = _DateTimeFormat( _NowCalc(),3)
        GUICtrlSetData($Input3,$hinput3)
        $binput3 = "Stop"
        GUICtrlSetData($Button3,$binput3)
    EndIf   
    if $Button4 = GuiGetMsg() & $binput4 = "start" then
        $hinput4 = _DateTimeFormat( _NowCalc(),3)
        GUICtrlSetData($Input4,$hinput4)
        $binput4 = "Stop"
        GUICtrlSetData($Button4,$binput4)
    EndIf
    ;------------------------------------------------------------STOP
    if $Button1 = GuiGetMsg() & $binput1 = "stop" then
        $hinput1 = "0"
        GUICtrlSetData($Input1,$hinput1)
        $binput1 = "Start"
        GUICtrlSetData($Button1,$binput1)
    EndIf
    if $Button2 = GuiGetMsg() & $binput2 = "stop" then
        $hinput2 = "0"
        GUICtrlSetData($Input2,$hinput2)
        $binput2 = "Start"
        GUICtrlSetData($Button2,$binput2)
    EndIf
    if $Button3 = GuiGetMsg() & $binput3 = "stop" then
        $hinput3 = "0"
        GUICtrlSetData($Input3,$hinput3)
        $binput3 = "Start"
        GUICtrlSetData($Button3,$binput3)
    EndIf
    if $Button4 = GuiGetMsg() & $binput4 = "stop" then
        $hinput4 = "0"
        GUICtrlSetData($Input4,$hinput4)
        $binput4 = "Start"
        GUICtrlSetData($Button4,$binput4)
    EndIf
    
    
    Select
    Case $msg = $GUI_EVENT_CLOSE
        ExitLoop
    Case Else
        ;;;;;;;
    EndSelect
WEnd
Exit
Modifié en dernier par SurPriseS le sam. 08 sept. 2007 14:34, modifié 1 fois.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

#2

Message par ani »

bonjour :)

essaye dans la boucle while

Code : Tout sélectionner

While 1 
$msg = GuiGetMsg() 
Select
;------------------------------------------------------------START 
case $msg = $Button1

ect..
vu comme çà

ps:vais corriger, je rentre à la maison :)
SurPriseS
Niveau 6
Niveau 6
Messages : 289
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

#3

Message par SurPriseS »

Avec des case a la place des IF, je crois que j'avais testé et c'étais pire :\
Bon connaissant ma mémoire de moineaux, je vais quand même revérifier :D
Merci
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

#4

Message par ani »

au pire des cas fait ceux-ci pour chaque bouton 1/2/3/4

Code : Tout sélectionner

case $msg = $Button1
If GUICtrlRead($Button1) = "Start" Then
$hinput1 = _DateTimeFormat( _NowCalc(),3) 
GUICtrlSetData($Input1,$hinput1) 
GUICtrlSetData($Button1,"Stop")
elseIf GUICtrlRead($Button1) = "Stop" Then
GUICtrlSetData($Input1,"0") 
GUICtrlSetData($Button1,"Start") 
EndIf

pour le bouton calcul (bouton 5/6/7/8)

Code : Tout sélectionner

case $msg = $Button5
If GUICtrlRead($Button1) = "stop" then 
GUICtrlSetData($Input1,"0") 
GUICtrlSetData($Button1,"Start") 
EndIf


c'est un beau projet là :)
mais pourquoi j'ai pas ce genre d'idée :§
SurPriseS
Niveau 6
Niveau 6
Messages : 289
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

#5

Message par SurPriseS »

^^ Merci je vais essayer, ma façon de faire les cases c'est bien se que je disait au dessus, c'est pire ...
Je vais test la tienne ;)
Pour les idées quand tu bosse dans une boite d'informatique avec un coin cyber ta forcément des idées de conneries a faire pour gagner du temps :D
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

#6

Message par ani »

comment tu obtiend le nombre d'impression faite ? (c'est l'imprimante, le nombre de page sortie) ?
SurPriseS
Niveau 6
Niveau 6
Messages : 289
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

#7

Message par SurPriseS »

A rentrer à la main par la personne en caisse, c'est juste pour simplifier un peu les calculs ;)
SurPriseS
Niveau 6
Niveau 6
Messages : 289
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

#8

Message par SurPriseS »

Bon je te remercie beaucoup sa marche nikel ;) je comprend mon erreur en partie ;)

Op donc le code pour le moment :

Code : Tout sélectionner

#include <GUIConstants>
#include <date>
;variable
$hinput1 = 0
$hinput2 = 0
$hinput3 = 0
$hinput4 = 0
$binput1 = "Start"
$binput2 = "Start"
$binput3 = "Start"
$binput4 = "Start"

; == GUI generated with Koda ==
$Form1 = GUICreate("Calcul", 591, 238, 275, 125)
$Input1 = GUICtrlCreateInput($hinput1, 152, 40, 121, 21, -1,$WS_EX_CLIENTEDGE)
$Input2 = GUICtrlCreateInput($hinput2, 152, 72, 121, 21, -1,$WS_EX_CLIENTEDGE)
$Input3 = GUICtrlCreateInput($hinput3, 152, 104, 121, 21, -1,$WS_EX_CLIENTEDGE)
$Input4 = GUICtrlCreateInput($hinput4, 152, 136, 121, 21, -1,$WS_EX_CLIENTEDGE)
$Button1 = GUICtrlCreateButton($binput1, 416, 40, 59, 17)
$Button2 = GUICtrlCreateButton($binput2, 416, 72, 59, 17)
$Button3 = GUICtrlCreateButton($binput3, 416, 104, 59, 17)
$Button4 = GUICtrlCreateButton($binput4, 416, 136, 59, 17)
GUICtrlCreateLabel("Temps :", 176, 16, 42, 17)
$Input5 = GUICtrlCreateInput("0", 288, 40, 121, 21, -1, $WS_EX_CLIENTEDGE)
$Input6 = GUICtrlCreateInput("0", 288, 72, 121, 21, -1, $WS_EX_CLIENTEDGE)
$Input7 = GUICtrlCreateInput("0", 288, 104, 121, 21, -1, $WS_EX_CLIENTEDGE)
$Input8 = GUICtrlCreateInput("0", 288, 136, 121, 21, -1, $WS_EX_CLIENTEDGE)
GUICtrlCreateLabel("Nombres d'impréssions :", 288, 16, 117, 17)
GUICtrlCreateLabel("Cyber 1", 104, 40, 40, 17)
GUICtrlCreateLabel("Cyber 2", 104, 72, 40, 17)
GUICtrlCreateLabel("Cyber 3", 104, 104, 40, 17)
GUICtrlCreateLabel("Cyber 4", 104, 136, 40, 17)
$Group1 = GUICtrlCreateGroup("Tarifs", 0, 32, 97, 129)
GUICtrlCreateLabel("1/4h = 75c", 8, 48, 57, 17)
GUICtrlCreateLabel("20min = 1€", 8, 64, 56, 17)
GUICtrlCreateLabel("30min = 1.5€", 8, 80, 65, 17)
GUICtrlCreateLabel("1h = 3€", 8, 96, 40, 17)
GUICtrlCreateLabel("Impression = 20c", 8, 112, 84, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button5 = GUICtrlCreateButton("Calcul", 504, 40, 59, 17)
$Button7 = GUICtrlCreateButton("Calcul", 504, 72, 59, 17)
$Button8 = GUICtrlCreateButton("Calcul", 504, 104, 59, 17)
$Button6 = GUICtrlCreateButton("Calcul", 504, 136, 59, 17)
$Input9 = GUICtrlCreateInput("0", 504, 184, 65, 21, -1, $WS_EX_CLIENTEDGE)
GUICtrlCreateLabel("A payer : ", 448, 184, 49, 17)
GUISetState(@SW_SHOW)
While 1
    $msg = GuiGetMsg()
    ;------------------------------------------------------------START-STOP
        Select
        case $msg = $Button1
            If GUICtrlRead($Button1) = "Start" Then
                $hinput1 = _DateTimeFormat( _NowCalc(),3)
                GUICtrlSetData($Input1,$hinput1)
                GUICtrlSetData($Button1,"Stop")
            elseIf GUICtrlRead($Button1) = "Stop" Then
                GUICtrlSetData($Input1,"0")
                GUICtrlSetData($Button1,"Start")
            EndIf 
        case $msg = $Button2
            If GUICtrlRead($Button2) = "Start" Then
                $hinput2 = _DateTimeFormat( _NowCalc(),3)
                GUICtrlSetData($Input2,$hinput2)
                GUICtrlSetData($Button2,"Stop")
            elseIf GUICtrlRead($Button2) = "Stop" Then
                GUICtrlSetData($Input2,"0")
                GUICtrlSetData($Button2,"Start")
            EndIf 
        case $msg = $Button3
            If GUICtrlRead($Button3) = "Start" Then
                $hinput3 = _DateTimeFormat( _NowCalc(),3)
                GUICtrlSetData($Input3,$hinput3)
                GUICtrlSetData($Button3,"Stop")
            elseIf GUICtrlRead($Button3) = "Stop" Then
                GUICtrlSetData($Input3,"0")
                GUICtrlSetData($Button3,"Start")
            EndIf 
        case $msg = $Button4
            If GUICtrlRead($Button4) = "Start" Then
                $hinput4 = _DateTimeFormat( _NowCalc(),3)
                GUICtrlSetData($Input4,$hinput4)
                GUICtrlSetData($Button4,"Stop")
            elseIf GUICtrlRead($Button4) = "Stop" Then
                GUICtrlSetData($Input4,"0")
                GUICtrlSetData($Button4,"Start")
            EndIf           
    

        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case Else
            ;;;;;;;
        EndSelect
WEnd
Exit

;_DateTimeFormat( _NowCalc(),3)
 
Répondre