Aktuelle Zeit: 10.07.2020 17:46

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: ContainerGadget wird nicht angezeigt
BeitragVerfasst: 04.09.2019 12:26 
Offline

Registriert: 28.07.2019 12:51
Moin,
ich habe ein ContainerGadget mit ProgressBar und 2 Textfeldern erstellt.
Das ContainerGadget hab ich mit x=-1000 und y=-1000 erstmal versteckt.

Code:
  ContainerGadget(#ContainerProgress, -1000, -1000, 460, 110, #PB_Container_Raised)
    ProgressBarGadget(#ProgressBar, 20, 20, 420, 20, 0, 100, #PB_ProgressBar_Smooth)
    TextGadget(#ContainerProgressText_1, 20, 50, 420, 20, "")
    TextGadget(#ContainerProgressText_2, 20, 70, 420, 20, "")
  CloseGadgetList()

Wenn ich jetzt das ContainerGadget mit folgendem Code verwenden möchte,

Code:
  ResizeGadget(#ContainerProgress, 100, 100, 460, 110)
  For i = 0 To ArraySize(FileArray())-1
    SetGadgetState(#ProgressBar, (i))
    SetGadgetText(#ContainerProgressText_1, FileArray(i))
    SetGadgetText(#ContainerProgressText_2, "wird geladen")
    InsertFile(FileArray(i))
  Next i

Werden zwar die ProgressBar und die Textfelder angezeigt, aber das ContainerGadget
wird nicht dargestellt.

Kann mir Jemand sagen warum das so ist?

Gruß Michael

_________________
PureBasic 5.72 LTS (Windows - x86)
Windows 10 x86


Zuletzt geändert von Michael(362) am 04.09.2019 14:00, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ContainerGadget wird nicht angezeigt
BeitragVerfasst: 04.09.2019 12:34 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Wenn du in einer Schleife ohne Thread die Gadgetwerte änderst, dann gibt es auch keine Fenster-Events und deshalb werden die Gadgets auch nicht neu gezeichnet.
Entweder lagerst du in einen Thread aus:
Code:
EnableExplicit

Enumeration
  #ContainerProgress
  #ProgressBar
  #ContainerProgressText_1
  #ContainerProgressText_2
EndEnumeration

Procedure Thread(z)
  Protected i
 
  ;For i = 0 To ArraySize(FileArray())-1
  For i = 0 To 100
    SetGadgetState(#ProgressBar, (i))
    ;SetGadgetText(#ContainerProgressText_1, FileArray(i))
    SetGadgetText(#ContainerProgressText_1, Str(i))
    SetGadgetText(#ContainerProgressText_2, "wird geladen")
    Delay(100)
  Next i
EndProcedure

If OpenWindow(0, 0, 0, 800, 600, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ContainerGadget(#ContainerProgress, -1000, -1000, 460, 110, #PB_Container_Raised)
  ProgressBarGadget(#ProgressBar, 20, 20, 420, 20, 0, 100, #PB_ProgressBar_Smooth)
  TextGadget(#ContainerProgressText_1, 20, 50, 420, 20, "")
  TextGadget(#ContainerProgressText_2, 20, 70, 420, 20, "")
  CloseGadgetList()
 
  ResizeGadget(#ContainerProgress, 100, 100, 460, 110)
 
  CreateThread(@Thread(), 0)
 
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 1
           
        EndSelect
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf

(funktioniert nur unter Windows)

Oder du sorgst dafür, dass dein Fenster mit UpdateWindow_() neu gezeichnet wird:
Code:
EnableExplicit

Define i

Enumeration
  #ContainerProgress
  #ProgressBar
  #ContainerProgressText_1
  #ContainerProgressText_2
EndEnumeration

If OpenWindow(0, 0, 0, 800, 600, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ContainerGadget(#ContainerProgress, -1000, -1000, 460, 110, #PB_Container_Raised)
  ProgressBarGadget(#ProgressBar, 20, 20, 420, 20, 0, 100, #PB_ProgressBar_Smooth)
  TextGadget(#ContainerProgressText_1, 20, 50, 420, 20, "")
  TextGadget(#ContainerProgressText_2, 20, 70, 420, 20, "")
  CloseGadgetList()
 
  ResizeGadget(#ContainerProgress, 100, 100, 460, 110)
  ;For i = 0 To ArraySize(FileArray())-1
  For i = 0 To 100
    SetGadgetState(#ProgressBar, (i))
    ;SetGadgetText(#ContainerProgressText_1, FileArray(i))
    SetGadgetText(#ContainerProgressText_1, Str(i))
    SetGadgetText(#ContainerProgressText_2, "wird geladen")
    UpdateWindow_(WindowID(0))
    Delay(100)
  Next i
 
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 1
           
        EndSelect
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf

(funktioniert nur unter Windows)

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ContainerGadget wird nicht angezeigt
BeitragVerfasst: 04.09.2019 12:38 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
ResizeGadget() sollte ein Repaint triggern.

_________________

Links:
PureBasic Discord
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ContainerGadget wird nicht angezeigt
BeitragVerfasst: 04.09.2019 12:38 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Hallo Michael,

- Bitte ein lauffähiges Code rein stellen. Ersten Beitrag kannst du editieren.
- Welche OS und welche PB version?
- Schau mal nach HideGadget

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ContainerGadget wird nicht angezeigt
BeitragVerfasst: 04.09.2019 12:41 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
@RSBasic

Bitte erwähne das ändern von Gadgets mit Threads Nur Unter Windows funktioniert.

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ContainerGadget wird nicht angezeigt
BeitragVerfasst: 04.09.2019 12:44 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Mijikai hat geschrieben:
ResizeGadget() sollte ein Repaint triggern.

Das klappt leider nicht. Auch nicht mit ResizeWindow(). Funktioniert anscheinend nur, wenn man direkt (unter Windows) die WinAPI-Funktion nutzt.

@mk-soft
Okay, habe ich hinzugefügt.

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ContainerGadget wird nicht angezeigt
BeitragVerfasst: 04.09.2019 12:51 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
RSBasic hat geschrieben:
... Funktioniert anscheinend nur, wenn man direkt (unter Windows) die WinAPI-Funktion nutzt.

@mk-soft
Okay, habe ich hinzugefügt.


Das überrascht mich :?

Liegt das am ContainerGadget?
In meinem ProgressBar Modul (hier im Forum) benutze ich Resize um alle Element zu Updaten und hatte noch nie Probleme damit.
Hab damals Resize verwendet da dies der einzige Weg war die Progressbar auf allen OS korrekt darzustellen...

_________________

Links:
PureBasic Discord
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Zuletzt geändert von Mijikai am 04.09.2019 12:55, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ContainerGadget wird nicht angezeigt
BeitragVerfasst: 04.09.2019 12:55 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Liegt vielleicht daran, dass es kein Standard-Window Control ist, sondern ein selbst erstelltes. Klassenname lautet PureContainer.

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ContainerGadget wird nicht angezeigt
BeitragVerfasst: 04.09.2019 12:56 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
RSBasic hat geschrieben:
Liegt vielleicht daran, dass es kein Standard-Window Control ist, sondern ein selbst erstelltes. Klassenname lautet PureContainer.


Das könnte sein, gut zu wissen.

_________________

Links:
PureBasic Discord
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: ContainerGadget wird nicht angezeigt
BeitragVerfasst: 04.09.2019 13:59 
Offline

Registriert: 28.07.2019 12:51
Vielen Dank für die Antworten.

@RSBasic
Ich habe vergessen, daß in die Schleife noch ein Prozedur-Aufruf gehört, in dem die Dateien verarbeitet werden.
Hab ich jetzt geändert.

Das Problem habe ich gelöst, in dem ich das ContainerGadget mit der ProgressBar in einem eigenen Fenster laufen lasse.

Trotzdem vielen Dank für die Antwort.
Gruß Michael

_________________
PureBasic 5.72 LTS (Windows - x86)
Windows 10 x86


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 29 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye