Problème d'affichage avec buttonimageGadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Patix
Messages : 102
Inscription : ven. 19/nov./2004 14:17

Problème d'affichage avec buttonimageGadget

Message par Patix »

Le code :
****************** Prog ne fonctionne pas
If OpenWindow(1, 100, 200, 210, 314,#PB_Window_SystemMenu, "Window 1") And CreateGadgetList(WindowID(1))

UseJPEGImageDecoder()
If LoadImage(70, "a:\terremeca2.jpg")
ButtonImageGadget(56, 1, 1, 20, 20, UseImage(70))
; ImageGadget(7, 1,1,50,50,UseImage(70))
EndIf


Delay (8000)
CloseWindow(1)

EndIf

If OpenWindow(2, 100, 200, 195, 260, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget|#PB_Window_ScreenCentered, "PureBasic Window2")
Repeat
EventID.l = WaitWindowEvent()

If EventID = #PB_Event_CloseWindow ; If the user has pressed on the close button
Quit = 1
EndIf

Until Quit = 1


EndIf


End
************
Dans ce petit prog : Imagegadget affiche l'image mais pas buttonimagegadget et je ne comprends pas.

j'ai fait un autre bout de code ou cela fonctionne .


************* prog fonctionne
If OpenWindow(0,0,0,120,100,#PB_Window_BorderLess|#PB_Window_ScreenCentered,"ButtonImage") And CreateGadgetList(WindowID(0))
UseJPEGImageDecoder()
If LoadImage(0, "a:\terremeca2.jpg")
ButtonImageGadget(0,1,1,119,99,UseImage(0))
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
*************

Si quelqu'un peut me donner la soluce, je suis preneur.

Patix
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Est ce que tu as une diskette dans ton lecteur a: et/ou as tu un image sur cette diskette ?
Patix
Messages : 102
Inscription : ven. 19/nov./2004 14:17

buttonimagegadget pb d'affichage

Message par Patix »

bien sur qu'il y a tout ce qu'il faut ou il faut :-).

J'ai du une erreur dans la syntaxe qqe part ou une érreur d'écriture mais je ne vois pas ou.

Dans le cas qui m'interesse, ça ne marche pas.
Et quand je fais un essai sur une portion de code ça marche.

comprend pas :-o
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

J'ai pas compris ton problème, là.

Par contre, ton image et ton bouton s'affichent au même endroit sur la fenêtre.

Code : Tout sélectionner

If OpenWindow(1, 100, 200, 210, 314,#PB_Window_SystemMenu, "Window 1") And CreateGadgetList(WindowID(1)) 
  
  UseJPEGImageDecoder() 
  If LoadImage(70, "D:\PureBasic\Compilers\Open.bmp") 
    ButtonImageGadget(56, 1, 1, 20, 20, UseImage(70)) 
    ImageGadget(7, 1,1,50,50,UseImage(70)) 
  EndIf 
  
  
  ; Delay (8000) 
  ; CloseWindow(1) 
  Repeat
  Until WaitWindowEvent() = #PB_EventCloseWindow
EndIf 
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

D'abord, on n'utilise pas un Delay() pour temporiser ce genre de boucle.
Le delay te stoppe l'execution du programme, et donc, le rafraichissement de la fenêtre.

Code : Tout sélectionner

If OpenWindow(1, 100, 200, 210, 314,#PB_Window_SystemMenu, "Window 1") And CreateGadgetList(WindowID(1)) 
  
  UseJPEGImageDecoder() 
  If LoadImage(70, "D:\PureBasic\Compilers\Open.jpg") 
    
    ImageGadget(7, 1,1,50,50,UseImage(70))
    ButtonImageGadget(56, 1, 1, 20, 20, UseImage(70)) 
    
    Start = ElapsedMilliseconds()
  EndIf 
  
  ; Delay (8000) 
  ; CloseWindow(1)
  
  ; Solution 1
  ; Repeat
  ; Until ElapsedMilliseconds()- Start >= 8000 Or WindowEvent() = #PB_EventCloseWindow
  
  ;Solution 2
  Repeat
    If ElapsedMilliseconds()- Start >= 8000
      CloseWindow(1)
    EndIf
  Until WindowEvent() = #PB_EventCloseWindow
  
  End
EndIf 
Patix
Messages : 102
Inscription : ven. 19/nov./2004 14:17

buttonimagegadget et delay

Message par Patix »

En fait je veux faire apparaitre une fenêtre avec image et bordure sans la barre de fenêtre. Et ensuite la fenêtre se ferme toute seule.

Donc je pensais créer une fenêtre sans bordure. Lui mettre par dessus un
bouton image. Et ensuite faire disparaitre la fenêtre grace à delay().

Je viens de m'apercevoir que la fonction delay() prend le pas sur l'apparition du bouton.

Quelle méthode serait à utiliser pour qu'une fenêtre apparaisse ss barre avec image et qu'elle se ferme seule.

Style ce que l'on voit quand on lance certain prog.

suis je plus clair ? :-)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Code : Tout sélectionner

If OpenWindow(1, 100, 200, 210, 314,#PB_Window_BorderLess|#WS_BORDER , "Window 1") And CreateGadgetList(WindowID(1)) 
  
  UseJPEGImageDecoder() 
  If LoadImage(70, "D:\PureBasic\Compilers\Open.jpg") 
    ButtonImageGadget(56, 1, 1, 20, 20, UseImage(70)) 
    ImageGadget(7, 1,1,50,50,UseImage(70))
    Start = ElapsedMilliseconds()
  EndIf 
  
  Repeat
    If WindowEvent() = 0 : Delay(20) : EndIf
    
  Until ElapsedMilliseconds() -Start >= 8000
  CloseWindow(1)
  
  End
EndIf 
Sinon, tu peux utiliser #WS_DLGFRAME à la place de #WS_BORDER
Patix
Messages : 102
Inscription : ven. 19/nov./2004 14:17

Message par Patix »

Merci pour tes réponses rapides.

Maintenant je suis bloqué, je pense par l'utilisation de la version démo qui n'accepte pas la variable #WS_BORDER.

Donc comme j'ai commandé Purebasic, je vais attendre son arrivée. :-)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Ah oui, si tu as la version de démo de Pure, pas de constantes ou de fonctions provenant de l'Api.

Mais tu ne perdras rien à l'acheter, il est vraiment super ce langage :)

En attendant, tu peux toujours retirer le #WS_BORDER.

Sinon, tu peux faire une fenêtre sans bordure, et ajouter un ContainerGadget() qui couvre toute la surface, avec l'option #PB_Container_Raised.

Code : Tout sélectionner

If OpenWindow(1, 100, 200, 210, 314,#PB_Window_BorderLess , "Window 1") And CreateGadgetList(WindowID(1)) 
  
  UseJPEGImageDecoder() 
  If LoadImage(70, "D:\PureBasic\Compilers\Open.jpg")
    ContainerGadget(100, 0, 0, 210, 314, #PB_Container_Raised)
    
    ButtonImageGadget(56, 1, 1, 20, 20, UseImage(70)) 
    ImageGadget(7, 1,1,50,50,UseImage(70))
    CloseGadgetList()
    
    Start = ElapsedMilliseconds() 
  EndIf 
  
  Repeat 
    If WindowEvent() = 0 : Delay(20) : EndIf 
    
  Until ElapsedMilliseconds() -Start >= 8000 
  CloseWindow(1) 
  
  End 
EndIf 
Patix
Messages : 102
Inscription : ven. 19/nov./2004 14:17

Message par Patix »

Merci, c'est mieux pour moi. :-)
Répondre