[GELÖST] ScrollAreaGadget alle Gadget entfernt

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

[GELÖST] ScrollAreaGadget alle Gadget entfernt

Beitrag von marcelx »

Hallo,

gibt es eine Möglichkeit alle Gadget in ein ScrollAreaGadget zu entfernen ohne in eine Schleifen mit FreeGadget?

Code: Alles auswählen

Enumeration
  #button
  #area
  #Preview
EndEnumeration

Procedure setArea()
  TextGadget(#PB_Any, 10,  10, 250, 20, "TextGadget")
  StringGadget(#PB_Any, 10,  40, 250, 20, "StringGadget...")
  ; und noch viel mehr ...  
EndProcedure

Procedure deleteArea()
  Debug "deleteArea"
EndProcedure

If OpenWindow(0, 0, 0, 350, 300, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ButtonGadget(#button, 100, 20, 90, 20, "delete")

  ScrollAreaGadget(#area, 10, 50, 300,200, 470, 400, #PB_Ignore, #PB_ScrollArea_Flat )
  setArea()
  CloseGadgetList()

  Repeat
    event = WaitWindowEvent()
    Select event
      Case  #PB_Event_Gadget
        EventGadget = EventGadget()
        Select EventGadget
          Case #button
            deleteArea()
        EndSelect
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf
Danke und Gruß
MarcelX
Zuletzt geändert von marcelx am 26.01.2018 15:17, insgesamt 1-mal geändert.
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: ScrollAreaGadget alle Gadget entfernt

Beitrag von Bisonte »

Ich habe da ein wenig experimentiert....

Anscheinend werden alle Gadgets entfernt, wenn man das "ParentGadget" per FreeGadget() entfernt.

Also würde es reichen, das ScrollAreaGadget per FreeGadget zu löschen und alles wieder neu zu erstellen.

Hier um meine These zu beweisen :

Code: Alles auswählen

 Enumeration
  #button
  #area
  #Preview
EndEnumeration
Global t1, s1
Procedure setArea()

    t1 = TextGadget(#PB_Any, 10,  10, 250, 20, "TextGadget")
    s1 = StringGadget(#PB_Any, 10,  40, 250, 20, "StringGadget...")


  ; und noch viel mehr ... 
EndProcedure

Procedure deleteArea()
  Debug "deleteArea"
  FreeGadget(#area)
  If IsGadget(t1)
    Debug "Gadgets sind noch Da!"
  EndIf
  ScrollAreaGadget(#area, 10, 50, 300,200, 470, 400, #PB_Ignore, #PB_ScrollArea_Flat )
  setArea()
  CloseGadgetList()
  
EndProcedure

If OpenWindow(0, 0, 0, 350, 300, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  ButtonGadget(#button, 100, 20, 90, 20, "delete")

  ScrollAreaGadget(#area, 10, 50, 300,200, 470, 400, #PB_Ignore, #PB_ScrollArea_Flat )
  setArea()
  CloseGadgetList()

  Repeat
    event = WaitWindowEvent()
    Select event
      Case  #PB_Event_Gadget
        EventGadget = EventGadget()
        Select EventGadget
          Case #button
            deleteArea()
        EndSelect
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf 
Da das : " Debug "Gadgets sind noch Da!" " nicht aufgerufen wird.... verlass ich mich mal darauf ;)
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: ScrollAreaGadget alle Gadget entfernt

Beitrag von marcelx »

Danke Bisonte,

es war mir nicht klar dass FreeGadget auf ScrollAreaGadget anwendbar ist.
Ist die Abfrage IsGadget(t1) im Grund genommen überflüssig.

Auf jedenfalls eine super Lösung.
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: ScrollAreaGadget alle Gadget entfernt

Beitrag von Bisonte »

Das Beispiel soll nur meine Vermutung beweisen, das die erstellten Gadgets wirklich nicht mehr vorhanden sind...
Daher können meine "Änderungen" an deinem Code komplett ignoriert werden... bis auf das FreeGadget(#area) !
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: [GELÖST] ScrollAreaGadget alle Gadget entfernt

Beitrag von marcelx »

War mir schon klar
Win-10, PB 5.31 (Windows - x86)
Antworten