ScrollAreaGadget's??

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Hellboy
Beiträge: 14
Registriert: 11.09.2004 11:20

ScrollAreaGadget's??

Beitrag 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
sbehrens
Beiträge: 274
Registriert: 08.09.2004 18:41
Kontaktdaten:

Re: ScrollAreaGadget's??

Beitrag 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
enjoy life... while you can!
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag 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 
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
KTX82
Beiträge: 95
Registriert: 31.08.2004 00:11
Wohnort: Mannheim
Kontaktdaten:

Beitrag 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
Pharmacie populaire www.viagrasansordonnancefr.com aide aux malades
Antworten