Temps de reaction du programme
-
- Messages : 510
- Inscription : dim. 25/mars/2007 13:44
- Localisation : Toulouse, France
- Contact :
Temps de reaction du programme
Bonsoir a vous,
je suis confronté a un petit probleme: il faut parfois que je clique plusieurs fois sur la croix pour fermer le programme ou sur un bouton pour activer les fonctions. Je ne montre pas mon code parce qu'il est long mais je vous demande si ca vous est deja arrivé ? et surtout pourquoi ?
je suis confronté a un petit probleme: il faut parfois que je clique plusieurs fois sur la croix pour fermer le programme ou sur un bouton pour activer les fonctions. Je ne montre pas mon code parce qu'il est long mais je vous demande si ca vous est deja arrivé ? et surtout pourquoi ?
Bah, non. Pas encore (mais je suis un débutant en PB). Je constate plutôt que PB et les applications générées sont très véloces et réactives. Sur ma configuration j'avais fait des tests sous RealBasic et ce qui me prenait de 5 à 6s se passe maintenant sous PB de façon quasi instantanée (quand j'ai vu ça, j'ai immédiatement acheté une licence PB)..Après je me suis aperçu que l'exe PB ne faisiait qu'une dizane de ko et celui de RealBasic 5mo... Vu le prix des deux solutions, mon choix se passe d'autres explications.
Re: Temps de reaction du programme
c'est symptomatique d'un code mal ecrit !lepiaf31 a écrit :Bonsoir a vous,
je suis confronté a un petit probleme: il faut parfois que je clique plusieurs fois sur la croix pour fermer le programme ou sur un bouton pour activer les fonctions. Je ne montre pas mon code parce qu'il est long mais je vous demande si ca vous est deja arrivé ? et surtout pourquoi ?
ta boucle des event est tout simplement mal geré !

-
- Messages : 510
- Inscription : dim. 25/mars/2007 13:44
- Localisation : Toulouse, France
- Contact :
J'ai beau cherché je ne voit pas ce qui ne va pas:
Code : Tout sélectionner
OpenWindow(0, 0, 0, 557, 574, "test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
CreateGadgetList(WindowID(0))
UsePNGImageDecoder()
If LoadImage(0, "C:\Documents and Settings\Kevin Serin\Bureau\testNewLog\logo.png")
ImageGadget(4, 300, 20, 220, 110, ImageID(0))
Else
MessageRequester("info", "impossible de charger l'image", #PB_MessageRequester_Ok)
EndIf
ListIconGadget(0, 10, 180, 400, 370, "Titre", 200)
AddGadgetColumn(0, 2, "où", 50)
AddGadgetColumn(0, 3, "Genre", 100)
AddGadgetColumn(0, 4, "Etat", 100)
ButtonGadget(1, 430, 180, 110, 40, "Ajouter", #PB_Button_Default)
ButtonGadget(2, 430, 240, 110, 40, "Modifier")
ButtonGadget(3, 430, 300, 110, 40, "Supprimer")
PostFilmNumber()
ListFilm()
Repeat
Delay(1)
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
Gadget = EventGadget()
If Gadget = 1
AddFilmRequester()
ElseIf Gadget = 2
ModifyFilm()
EndIf
EndIf
Until WaitWindowEvent() = #PB_Event_CloseWindow
Au début du code il manque le IF avant Openwindow
et le IF avant CreateGadgetList(WindowID(0))
j'ai repris ton code
j'ai enlever quelque ligne ; mais ça marche !
ta boucle d'evenement est pas bonne voici la mienne :
au plaisir de t'aider
et le IF avant CreateGadgetList(WindowID(0))
j'ai repris ton code
j'ai enlever quelque ligne ; mais ça marche !
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 557, 574, "test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
If CreateGadgetList(WindowID(0))
ListIconGadget(0, 10, 180, 400, 370, "Titre", 200)
AddGadgetColumn(0, 2, "où", 50)
AddGadgetColumn(0, 3, "Genre", 100)
AddGadgetColumn(0, 4, "Etat", 100)
ButtonGadget(1, 430, 180, 110, 40, "Ajouter", #PB_Button_Default)
ButtonGadget(2, 430, 240, 110, 40, "Modifier")
ButtonGadget(3, 430, 300, 110, 40, "Supprimer")
EndIf
Repeat
WaitWindowEvent()
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
fermer_0=1
EndSelect
Until fermer_0=1
EndIf
End
Code : Tout sélectionner
Repeat
WaitWindowEvent()
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
fermer_0=1
EndSelect
Until fermer_0=1
EndIf
End
Comme l'a dit Dobro, c'est dans la gestion des évènements qu'il faut chercher. De plus je te conseillerai de tester ta fenêtre.
Il est important de bien distinguer chaque gadget dans la boucle, sinon tu vas rapidement t'y perdre dès que tu auras des dizaines ou centaines de gadgets à gérer.
[Edit]
Grillé par vous autres, fait rien je le laisse quand même
Exemple avec ton bout de code
Il est important de bien distinguer chaque gadget dans la boucle, sinon tu vas rapidement t'y perdre dès que tu auras des dizaines ou centaines de gadgets à gérer.
[Edit]

Exemple avec ton bout de code
Code : Tout sélectionner
UsePNGImageDecoder() ; en tête de listing c'est mieux
;teste la création de la fenêtre et de la gadgetlist
If OpenWindow(0, 0, 0, 557, 574, "test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget)
If CreateGadgetList(WindowID(0))
If LoadImage(0, "C:\Documents and Settings\Kevin Serin\Bureau\testNewLog\logo.png")
ImageGadget(4, 300, 20, 220, 110, ImageID(0))
Else
MessageRequester("info", "impossible de charger l'image", #PB_MessageRequester_Ok)
EndIf
ListIconGadget(0, 10, 180, 400, 370, "Titre", 200)
AddGadgetColumn(0, 2, "où", 50)
AddGadgetColumn(0, 3, "Genre", 100)
AddGadgetColumn(0, 4, "Etat", 100)
ButtonGadget(1, 430, 180, 110, 40, "Ajouter", #PB_Button_Default)
ButtonGadget(2, 430, 240, 110, 40, "Modifier")
ButtonGadget(3, 430, 300, 110, 40, "Supprimer")
;PostFilmNumber()
;ListFilm()
EndIf
EndIf
;Rends la lecture de ta boucle claire, que tu n'ais pas à chercher pendant des lustres à quoi correspond chaque élément. Il existe d'autres méthodes mais en voilà une simple et lisible.
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case 1 : MessageRequester("info", "Bouton ajouter", #PB_MessageRequester_Ok)
Case 2 : MessageRequester("info", "Bouton modifier", #PB_MessageRequester_Ok)
Case 3 : MessageRequester("info", "Bouton Supprimer", #PB_MessageRequester_Ok)
EndSelect
Case #PB_Event_CloseWindow :Quitter = 1
EndSelect
Until Quitter
End
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Personnellement, je préfére utiliser des énumérations pour identifier mes gadgets par des noms #XXX plutôt qu'un numéro, ça donne un source plus lisible (enfin c'est mon avis).
Enumeration
#BTN_Ajouter
#BTN_Modifier
#BTN_Supprimer
EndEnumeration
...
ButtonGadget(#BTN_Ajouter, 430, 180, 110, 40, "Ajouter", #PB_Button_Default)
ButtonGadget(#BTN_Modifier, 430, 240, 110, 40, "Modifier")
ButtonGadget(#BTN_Supprimer, 430, 300, 110, 40, "Supprimer")
...
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #BTN_Ajouter : MessageRequester("info", "Bouton ajouter", #PB_MessageRequester_Ok)
Case #BTN_Modifier : MessageRequester("info", "Bouton modifier", #PB_MessageRequester_Ok)
Case #BTN_Supprimer : MessageRequester("info", "Bouton Supprimer", #PB_MessageRequester_Ok)
Enumeration
#BTN_Ajouter
#BTN_Modifier
#BTN_Supprimer
EndEnumeration
...
ButtonGadget(#BTN_Ajouter, 430, 180, 110, 40, "Ajouter", #PB_Button_Default)
ButtonGadget(#BTN_Modifier, 430, 240, 110, 40, "Modifier")
ButtonGadget(#BTN_Supprimer, 430, 300, 110, 40, "Supprimer")
...
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #BTN_Ajouter : MessageRequester("info", "Bouton ajouter", #PB_MessageRequester_Ok)
Case #BTN_Modifier : MessageRequester("info", "Bouton modifier", #PB_MessageRequester_Ok)
Case #BTN_Supprimer : MessageRequester("info", "Bouton Supprimer", #PB_MessageRequester_Ok)