Seite 1 von 1

ScrollAreaGadget's??

Verfasst: 11.09.2004 11:24
von Hellboy
Im folgenden Prog ist irgendwo ein Bug. Es sollten eigentlich zwei Fenster teile nebeneinnder dargestellt werden, aber irgenwie funzt das nicht..
Wär nett wenn ihr mir helfen würdet.

Code: Alles auswählen

#WindowWidth  = 800
#WindowHeight = 600

If OpenWindow(0, 0, 0, #WindowWidth, #WindowHeight, #PB_Window_SystemMenu, "PureBasic - Menu")

 If CreateMenu(0, WindowID())
  MenuTitle("Datei")
   MenuItem( 1, "Öffnen...")
   MenuItem( 2, "Speichern")
   MenuItem( 3, "Speichern unter...")
   MenuItem( 4, "Beenden")
 EndIf
 
 If CreateToolBar(0, WindowID())
   ToolBarStandardButton(0, #PB_ToolBarIcon_New)
   ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
   ToolBarStandardButton(2, #PB_ToolBarIcon_Save)
    
   ToolBarSeparator()
   
   ToolBarStandardButton(4, #PB_ToolBarIcon_Find)
   ToolBarToolTip(4, "Titel Suchen")
   
   ToolBarSeparator()
 EndIf
 
;************************************************************************
 If CreateGadgetList(WindowID())
 
  ScrollAreaGadget(0, 0, 0, 400, 400, 1000, 1000, 1)
  CloseGadgetList()

  PanelGadget(1, 0, 0, 400, 400)
   For k=0 To 3
    AddGadgetItem(1, -1, "Line "+Str(k))
    ButtonGadget(12+k, 10, 10, 100, 20, "Test"+Str(k))
   Next

   SplitterGadget(5, 0, 25, #WindowWidth, #WindowHeight-25, 0, 1, #PB_Splitter_Vertical)

   SetGadgetState(5, 500)

   CloseGadgetList()
 EndIf
;***************************************************************************

 Repeat
  
  EventID.l = WaitWindowEvent()

  If EventID.l = #WM_CLOSE
   Quit = 1
  EndIf

 Until Quit = 1

EndIf

End

Re: ScrollAreaGadget's??

Verfasst: 13.09.2004 15:01
von sbehrens
Hellboy hat geschrieben:Im folgenden Prog ist irgendwo ein Bug. Es sollten eigentlich zwei Fenster teile nebeneinnder dargestellt werden, aber irgenwie funzt das nicht.
Wie, Zwei Fensterteile?
Also, bei mir sieht das so aus:
Bild
Und was fehlt da jetzt noch?

mfG
Basti

//edit: Ich würde die Repeat Until Schleife so proggen:

Code: Alles auswählen

Repeat
  event=WindowEvent()
  Delay(20) ;oder wahlweise auch 1, so mit 20 mach ich es lieber
Until event=#PB_Event_CloseWindow

Verfasst: 13.09.2004 15:23
von Franky
Soll das vielleicht so? :?

Code: Alles auswählen

#WindowWidth  = 800
#WindowHeight = 600

If OpenWindow(0, 0, 0, #WindowWidth, #WindowHeight, #PB_Window_SystemMenu, "PureBasic - Menu")

 If CreateMenu(0, WindowID())
  MenuTitle("Datei")
   MenuItem( 1, "Öffnen...")
   MenuItem( 2, "Speichern")
   MenuItem( 3, "Speichern unter...")
   MenuItem( 4, "Beenden")
 EndIf
 
 If CreateToolBar(0, WindowID())
   ToolBarStandardButton(0, #PB_ToolBarIcon_New)
   ToolBarStandardButton(1, #PB_ToolBarIcon_Open)
   ToolBarStandardButton(2, #PB_ToolBarIcon_Save)
   
   ToolBarSeparator()
   
   ToolBarStandardButton(4, #PB_ToolBarIcon_Find)
   ToolBarToolTip(4, "Titel Suchen")
   
   ToolBarSeparator()
 EndIf
 
;************************************************************************
 If CreateGadgetList(WindowID())
  ScrollAreaGadget(0, 0, 0, 400, 400, 1000, 1000, 1)
  CloseGadgetList()

  PanelGadget(1, 0, 0, 400, 400)
   For k=0 To 3
    AddGadgetItem(1, -1, "Line "+Str(k))
    ButtonGadget(12+k, 10, 10, 100, 20, "Test"+Str(k))
   Next
   CloseGadgetList()
   SplitterGadget(5, 0, 25, #WindowWidth, #WindowHeight-25, 0, 1, #PB_Splitter_Vertical)
   SetGadgetState(5, 500)
 EndIf
;***************************************************************************

 Repeat
 
  EventID.l = WaitWindowEvent()

  If EventID.l = #WM_CLOSE
   quit = 1
  EndIf

 Until quit = 1

EndIf

End 

Verfasst: 14.09.2004 20:34
von KTX82
Die Event-Schleife lieber so umsetzen (verhindert Aufbauverzögerungen):

Code: Alles auswählen

exit = 0  ; <- nur in seltenen Fällen nötig
Repeat
  event = WindowEvent()
  While event
    
    ; Hier her kommt das Event-Handling
    
    if event = #PB_Event_CloseWindow : exit = 1 : endif
    event = WindowEvent()

    ;Auf "kein" Fall hier her das Handling !!!
  Wend

  Delay(20)
Until exit = 1