Button problem

Anfängerfragen zum Programmieren mit PureBasic.
Marc-21
Beiträge: 39
Registriert: 11.02.2008 19:37

Button problem

Beitrag von Marc-21 »

Hi habe mir erst vor kurzen PureBasic geholt und hier schon viel gelesen .
Jetzt habe ich ein Problem wenn ich das programm überdecke oder ablege fehlen mir die Button wenn ich den durch zufall treffe sind sie wieder da . Aber auch nur wenn ich ein bild im hintergrund habe.
Sonst geht es .
Ich hoffe Ihr könnt mir helfen.
Danke
Code:

Code: Alles auswählen

DataSection 
   Girl: IncludeBinary "C:\Dokumente und Einstellungen\Mulder\Eigene Dateien\Eigene Bilder\BIlder\4693.jpg" 
   
EndDataSection 
OpenWindow(0, 0, 0, 300,200, "Reconnect",#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_SystemMenu) 
UseJPEGImageDecoder()
CreateGadgetList(WindowID(0))
CreateStatusBar(0,WindowID(0))
   ButtonGadget(1, 30, 160, 100, 20, "Reconnect starten") 
   ButtonGadget(2, 180, 160, 100, 20, "Reconnect Stopp")
   AddStatusBarField(300)
   ImageGadget(0,0,0,300,200,CatchImage(0, ?Girl))

Repeat 
   event_w=WaitWindowEvent() 
   event_g=EventGadget() 
   Select event_w 
      Case #PB_Event_CloseWindow 
         End 
      Case #PB_Event_Gadget 
         Select event_g 
           Case 1 
              notepad = RunProgram("notepad","","",#PB_Program_Open | #PB_Program_Read)
           Case 2
              
              KillProgram(notepad)
              CloseProgram(notepad)
              
  
    EndSelect 
   EndSelect 

Until Event = #PB_Event_CloseWindow
End
__________________________________________________
Code-Tags wurden hinzugefügt
(RSBasic)
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Code: Alles auswählen


OpenWindow(0, 0, 0, 300,200, "Reconnect",#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_SystemMenu)
UseJPEGImageDecoder()
CreateGadgetList(WindowID(0))
CreateStatusBar(0,WindowID(0))
ButtonGadget(1, 30, 160, 100, 20, "Reconnect starten")

ButtonGadget(2, 180, 160, 100, 20, "Reconnect Stopp")
AddStatusBarField(300)
ImageGadget(0,0,0,300,200,CatchImage(0, ?Girl))

;---ImageGadget als Elternobjekt betrachten und nicht das Fenster
SetParent_(GadgetID(1),GadgetID(0))
SetParent_(GadgetID(2),GadgetID(0))
;----------------------------------------------------------------

Repeat
  event_w=WaitWindowEvent()
  event_g=EventGadget()
  Select event_w
    Case #PB_Event_CloseWindow
      End
    Case #PB_Event_Gadget
      Select event_g
        Case 1
          notepad = RunProgram("notepad","","",#PB_Program_Open | #PB_Program_Read)
        Case 2
          
          KillProgram(notepad)
          CloseProgram(notepad)
          
          
      EndSelect
  EndSelect
  
Until Event = #PB_Event_CloseWindow
End
DataSection
Girl: IncludeBinary "12eck.jpg"
   
EndDataSection
Ich habe die Entsprechende Stelle dokumentiert! :)
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Marc-21
Beiträge: 39
Registriert: 11.02.2008 19:37

Beitrag von Marc-21 »

Danke schön für die schnell hilfe.
Verstehe es aber nicht wie du das meinst. Sorry

Wenn ich das so mache gehen die button ´s nicht mehr.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Beitrag von hjbremer »

roherter hat eine sehr gute Idee gehabt, mit einem kleinem Fehler.

Probiere es einmal so.

Code: Alles auswählen

;es gibt nichts besseres als Konstanten !!!!!!! 
;erspart später viel Arbeit !!!!!!
;fördert die Übersicht, macht Änderungen leichter usw.

Enumeration   
#image
#cont1
#cont2
#butimg1
#button1
#button2
#statbar
EndEnumeration

UseJPEGImageDecoder() 

;#PB_Window_Invisible = nicht sichtbar = schnellerer Bildaufbau
windowstyles = #PB_Window_SystemMenu|1|#PB_Window_Invisible ;die 1 = zentriert

hwnd=OpenWindow(0, 0, 0, 300,200, "Reconnect",windowstyles) 

CreateGadgetList(hwnd) 
   
   CreateStatusBar(#statbar,hwnd) ;wozu ist eigentlich die Satusbar da ???
   AddStatusBarField(300)
   hoehe = StatusBarHeight(#statbar) 

   ;Resize muß sein ! siehe Hilfe zu ImageGadget, 
   ;da steht: Die Gadgetgröße passt sich automatisch der Bildgröße an
   ;ist das Bild also zu groß, wird ImageGadget auch größer und verdeckt die Statusbar.
   CatchImage(#image, ?Girl)
   imageid=ResizeImage(#image,300,200-hoehe)        
   ImageGadget(#butimg1,0,0,300,200-hoehe,imageid)
   
   ;Containergadget umgeht das Problem welches bei SetParent ImageButton - Buttongadget auftritt
   ;Problem ist: ein Imagegadget liefert kein Event, macht man das Imagegadget also zu einem 
   ;übergeordnetem Fenster (Parent=Eltern wie Vater+Mutter), dann läßt es kein EventGadget mehr durch.
   ;wenn der Button aber im Container ist, der Container also Parent für den/die Buttons ist,
   ;dann gibt es wieder ein Event von den Buttons. Dabei ist es dann egal wer das Parent vom Container ist.
   ;verstanden ? nein ? macht nix, glaube es einfach, denn es funktioniert
   
   ContainerGadget(#cont1,30,160,100,20)
     ButtonGadget(#button1, 0, 0, 100, 20, "Reconnect starten") 
   CloseGadgetList()
   
   ContainerGadget(#cont2,180,160,100,20)
     ButtonGadget(#button2, 0, 0, 100, 20, "Reconnect Stopp") 
   CloseGadgetList()

   
   ;---Container als Elternobjekt betrachten und nicht das Fenster 
   SetParent_(GadgetID(#cont1),GadgetID(#butimg1)) 
   SetParent_(GadgetID(#cont2),GadgetID(#butimg1)) 
   
  ;#PB_Window_Invisible rückgängig machen, Fenster anzeigen
  SetWindowState(0, #PB_Window_Normal)      
  
;----------------------------------------------------------------  

Repeat 
   event_w=WaitWindowEvent() 
      
   Select event_w 
      
      Case #PB_Event_Gadget 
      
         event_g=EventGadget() 
      
         Select event_g 
           
           Case #button1
              notepad = RunProgram("notepad","","",#PB_Program_Open | #PB_Program_Read) 
           
           Case #button2 
              
              KillProgram(notepad) 
              CloseProgram(notepad) 
  
         EndSelect 
         
   EndSelect 

Until Event_w = #PB_Event_CloseWindow 
End 

DataSection 
   Girl: IncludeBinary  "C:\WINDOWS\Web\Wallpaper\Stonehenge.jpg"
EndDataSection 

Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Marc-21
Beiträge: 39
Registriert: 11.02.2008 19:37

Beitrag von Marc-21 »

Hi danke für deine hilfe es klappt sher gut.
Die Statusbar soll noch eingebunden werden .
Habe gestern erst angefangen mit den Programm zu arbeiten dauert noch bist ich das so verstehe wie das geht.
Antworten