Page 1 sur 1
ImageGadget ??
Publié : sam. 12/mars/2005 12:55
par Jacobus

Salut, j'ai constaté un plantage avec la 3.93 sur des applications créées avec la 3.92.
Que ce soit sous cette forme:
ou sous cette forme:
Une fois le code compilé et exécuté, en cliquant sur l'image, tout se ferme.
Le debugger et l'appli lancée. idem sous forme d'exécutable. Aucun blème pour le créer, mais bug intégré à l'exe.
Or, je n'ai inséré aucun Event sur l'image (possible maintenant)
Cela ne se produisait pas avec la 3.92.
Est-ce arrivé à quelqu'un d'autre

Publié : sam. 12/mars/2005 13:54
par Anonyme2
Tu as mis la 3.93 à jour avec smartupdate ?
Si non, fais-le et dis-nous si c'est encore un bug
Publié : sam. 12/mars/2005 17:07
par Jacobus
Oui, j'ai mis à jour par smartupdate et je confirme mon problème.
D'autre part, j'ai essayé l'exemple de la doc de PB et ça ne pose aucun problème.
l'exemple de l'aide: (chemin de l'image à modifier pour test)
Code : Tout sélectionner
If OpenWindow(0,0,0,245,105,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"ImageGadget") And CreateGadgetList(WindowID(0))
If LoadImage(0, "C:\Mes documents\Mes images\BMP\Beware of Dog.BMP") ; change 2nd parameter to the path/filename of your image
ImageGadget(0, 10,10,100,83,UseImage(0)) ; imagegadget standard
ImageGadget(1,130,10,100,83,UseImage(0),#PB_Image_Border) ; imagegadget with border
EndIf
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
Ensuite je l'ai modifié pour inclure l'image dans l'exe.
Là ça plante : (chemin de l'image à modifier pour test)
Code : Tout sélectionner
Global Image0
Image0 = CatchImage(0, ?Image0)
Image0:IncludeBinary "C:\Mes documents\Mes images\BMP\Beware of Dog.BMP"
If OpenWindow(0,0,0,245,105,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"ImageGadget") And CreateGadgetList(WindowID(0))
ImageGadget(0, 10,10,100,83,Image0) ; imagegadget standard
ImageGadget(1,130,10,100,83,Image0,#PB_Image_Border) ; imagegadget with border
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
------------------------
j'ajouterai que le fait de cliquer sur une image qui engendre la fermeture pure et simple du programme, se produit dans une appli à fenêtres multiples.
Publié : sam. 12/mars/2005 17:10
par Polo
Normalement, if faudrait mettre UseImage(Image0) à la place d'Image0.
Publié : sam. 12/mars/2005 17:16
par Jacobus
Vu qu'Image0 est déclaré avant le UseImage() n'est pas nécessaire.
Publié : sam. 12/mars/2005 18:04
par Le Soldat Inconnu
aucun prob chez moi
Publié : sam. 12/mars/2005 19:54
par Jacobus
Argh! c'est pas fait pour me rassurer ça...

Publié : sam. 12/mars/2005 19:57
par Polo
extrait de la doc :
Un ImageID valide peut être obtenu via UseImage() ou ImageID().
(ImageGadget)[/code]
Publié : sam. 12/mars/2005 20:02
par Jacobus
Ben j'ai essayé aussi... résultat identique.
Les images chargées avec CatchImage() ne fonctionnent pas correctement sur ma config

Publié : sam. 12/mars/2005 20:09
par Flype
moi non plus pas de probleme. fait une reinstall propre de pb pour voir.
ou peut etre ce sont tes images à toi qui font planté mais je pense pas.
Publié : lun. 14/mars/2005 18:21
par Jacobus
Je pense que le problème vient d'un fichier corrompu quelque part sur mon système... mais lequel.
J'ai suivi ton conseil Flype, et réinstallé PB puis mis à jour par smartupdate et le résultat est pareil. Ce que je ne comprend pas c'est que le simple bout de code mis plus haut avec l'image chargée par catchImage() plante mon PB. Par contre un programme complet (env 1500 lignes) fonctionne très bien même avec les images en Catch.
je reste un peu ...
Je vais tâcher de faire un peu de ménage dans le système...
Publié : lun. 14/mars/2005 18:48
par Le Soldat Inconnu
met ton image en lien ici, qu'on puisse testé avec avant de partir sur des trucs compliqués
Publié : mar. 15/mars/2005 11:43
par Jacobus
Bon et bien j'ai trouvé le pourquoi du comment du parceque...
Les solutions les plus évidentes crévent parfois les yeux, et j'en suis tout honteux.
Suivant tes conseils Régis, j'ai cherché au plus simple... et c'était effectivement pas compliqué.
Dans cet exemple, j'avais simplement omis d'inclure mon image en Data !!
Code : Tout sélectionner
Global Image0
Image0 = CatchImage(0, ?Image0)
DataSection
Image0 : IncludeBinary "C:\Mes documents\Mes images\BMP\Beware of Dog.BMP"
EndDataSection
If OpenWindow(0,0,0,245,105,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"ImageGadget") And CreateGadgetList(WindowID(0))
ImageGadget(0, 10,10,100,83,Image0) ; imagegadget standard
ImageGadget(1,130,10,100,83,Image0,#PB_Image_Border) ; imagegadget with border
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
et là, ben oui ça fonctionne
Quant au blème de la fermeture de programme en cliquant sur une image, il était dû à ma boucle Repeat mal conçue. (Une de mes premières réalisation qui tournait correctement et à laquelle je ne rajoutais que des fonctions supplémentaires sans me préoccuper du reste)
Code : Tout sélectionner
Repeat
EventID = WaitWindowEvent()
Until EventID = #PB_EventCloseWindow Or EventID = #PB_EventGadget
CloseWindow(2)
If EventID = #PB_EventGadget
Select EventGadgetID()
Case #bouton_modifier : creation_fiche(1)
Case #bouton_enregistrer :creation_fichier()
Case #bouton_menu : Interface_acces()
Case #bouton_imp : imprimer()
EndSelect
EndIf
EndProcedure
Cette boucle intégrée à la procedure de ma fenêtre impliquait sa fermeture au clic sur une image.
Pour conclure :
je n'ai pas trouvé de bug dans Imagegadget() mais uniquement dans ma façon de coder...

Merci à vous et désolé de cette petite bourde qui n'a de conséquence que sur mon orgueil... bon ben voilà, on fait comme si j'avais rien dis...hum hum
@+

Publié : mar. 15/mars/2005 15:28
par Le Soldat Inconnu