Page 1 sur 1
Temps de reaction du programme
Publié : dim. 22/avr./2007 20:43
par lepiaf31
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 ?
Publié : dim. 22/avr./2007 21:46
par kuroyi
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
Publié : dim. 22/avr./2007 21:55
par Backup
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 ?
c'est symptomatique d'un code mal ecrit !
ta boucle des event est tout simplement mal geré !

Publié : lun. 23/avr./2007 17:43
par lepiaf31
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
Publié : lun. 23/avr./2007 18:04
par Thierryfr
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 !
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
ta boucle d'evenement est pas bonne voici la mienne :
Code : Tout sélectionner
Repeat
WaitWindowEvent()
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
fermer_0=1
EndSelect
Until fermer_0=1
EndIf
End
au plaisir de t'aider
Publié : lun. 23/avr./2007 18:06
par Thierryfr
sinon je te conseil
de crée ton programme comme ceci ( c'est comme ça que j'ai appris )
Constante fenetre
Constante gadget
variables
creation de la procedure fenetre
creation de la boucle principale
Publié : lun. 23/avr./2007 18:10
par Jacobus
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
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
Publié : lun. 23/avr./2007 18:44
par kuroyi
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)
Publié : lun. 23/avr./2007 19:53
par lepiaf31
Merci beaucoup de vos reponses
Sujet resolu !
