Aktuelle Zeit: 22.01.2018 20:08

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Container als Globals
BeitragVerfasst: 21.11.2017 12:09 
Offline
Benutzeravatar

Registriert: 15.11.2010 10:56
Hallo Leute,
habe gerade meine Container Schaltung auf Globals umgestellt und stehe irgendwie auf der Leitung, die Schalted nicht mehr!

Code:
EnableExplicit
;- Const
Enumeration
 
EndEnumeration
;- Global
Global Main
Global Container_01
Global Container_02
Global Container_03
Global Container_04
Global Container_05
Global Container_06

Global StatusBar

Global Btn_Im_Container_01
Global Btn_Im_Container_02
Global Btn_Im_Container_03
Global Btn_Im_Container_04
Global Btn_Im_Container_05
Global Btn_Im_Container_06

Global Btn_Container_1
Global Btn_Container_2
Global Btn_Container_3
Global Btn_Container_4
Global Btn_Container_5
Global Btn_Container_6

Global FensterTitel$      = "Container Window"
Global flags
Global ContainerZeiger
Global ContainerMode
Global MyWindowFenster_X  = 667
Global MyWindowFenster_Y  = 732
Global MyButton_X         = (MyWindowFenster_X/6) ;111
Global MyButton_Y         = 20
;
Procedure ShowContainer(index)
  Debug "Index= " + index
  ; ???????????????????????????????????????????????
  For ContainerZeiger =  Container_01 To Container_06
    HideGadget(ContainerZeiger, #True)
  Next
  HideGadget(index, #False)
  ContainerMode = index
EndProcedure
Procedure Main_Window()
  ;{ Window
  flags =  #PB_Window_SystemMenu |#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_Invisible
  Main = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,MyWindowFenster_X,MyWindowFenster_Y,FensterTitel$,flags)
  ; Begrenzung auf die vorgebene Grösse
  WindowBounds(Main,MyWindowFenster_X,MyWindowFenster_Y,MyWindowFenster_X,MyWindowFenster_Y)
  ;}
  ;{ StatusBar
  StatusBar =  CreateStatusBar(#PB_Any, WindowID(Main))
  ; StatusBar 0
  AddStatusBarField(MyWindowFenster_X)   
  ;}
  ;{ [01] Container
  Container_01 = ContainerGadget(#PB_Any,0,0,MyWindowFenster_X,MyWindowFenster_Y-StatusBarHeight(StatusBar)-(MyButton_Y*2))
  Btn_Im_Container_01 = ButtonGadget(#PB_Any,(MyButton_X*0),(MyButton_Y*3), MyButton_X, MyButton_Y, "Container_01")
  CloseGadgetList()
  ;}
  ;{ [02] Container
  Container_02 = ContainerGadget(#PB_Any,0,0,MyWindowFenster_X,MyWindowFenster_Y-StatusBarHeight(StatusBar)-(MyButton_Y*2))
  Btn_Im_Container_02 = ButtonGadget(#PB_Any,(MyButton_X*1),(MyButton_Y*3), MyButton_X, MyButton_Y, "Container_02")
  CloseGadgetList()
  ;}
  ;{ [03] Container
  Container_03 = ContainerGadget(#PB_Any,0,0,MyWindowFenster_X,MyWindowFenster_Y-StatusBarHeight(StatusBar)-(MyButton_Y*2))
  Btn_Im_Container_03 = ButtonGadget(#PB_Any,(MyButton_X*2),(MyButton_Y*3), MyButton_X, MyButton_Y, "Container_03")
  CloseGadgetList()
  ;}
  ;{ [04] Container
  Container_04 = ContainerGadget(#PB_Any,0,0,MyWindowFenster_X,MyWindowFenster_Y-StatusBarHeight(StatusBar)-(MyButton_Y*2))
  Btn_Im_Container_04 = ButtonGadget(#PB_Any,(MyButton_X*3),(MyButton_Y*3), MyButton_X, MyButton_Y, "Container_04")
  CloseGadgetList()
  ;}
  ;{ [05] Container
  Container_05 = ContainerGadget(#PB_Any,0,0,MyWindowFenster_X,MyWindowFenster_Y-StatusBarHeight(StatusBar)-(MyButton_Y*2))
  Btn_Im_Container_05 = ButtonGadget(#PB_Any,(MyButton_X*4),(MyButton_Y*3), MyButton_X, MyButton_Y, "Container_05")
  CloseGadgetList()
  ;}
  ;{ [06] Container
  Container_06 = ContainerGadget(#PB_Any,0,0,MyWindowFenster_X,MyWindowFenster_Y-StatusBarHeight(StatusBar)-(MyButton_Y*2))
  Btn_Im_Container_06 = ButtonGadget(#PB_Any, (MyButton_X*5),(MyButton_Y*3), MyButton_X, MyButton_Y, "Container_06")
  CloseGadgetList()
  ;}
  ;{ Fix_Btn
  Btn_Container_1 = ButtonGadget(#PB_Any ,(MyButton_X*0),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 1")
  Btn_Container_2 = ButtonGadget(#PB_Any, (MyButton_X*1),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 2")
  Btn_Container_3 = ButtonGadget(#PB_Any, (MyButton_X*2),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 3")
  Btn_Container_4 = ButtonGadget(#PB_Any, (MyButton_X*3),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 4")
  Btn_Container_5 = ButtonGadget(#PB_Any, (MyButton_X*4),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 5")
  Btn_Container_6 = ButtonGadget(#PB_Any, (MyButton_X*5),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 6")
  ;}
  ;{ Container ON
  HideWindow(Main, #False)                                         
  ;}
EndProcedure
Procedure Main_Events(EEventID,WWindowNr)
  Static Key.l
  Select EEventID
      ;{ SELECT
    Case #PB_Event_CloseWindow
      End
    Case #PB_Event_Gadget
      ;  GADGET
      Select EventGadget()
          ; LEER
        Case Btn_Im_Container_01, Btn_Im_Container_02, Btn_Im_Container_03, Btn_Im_Container_04, Btn_Im_Container_05, Btn_Im_Container_06
          MessageRequester("Info", "Container Btn = "+Str(ContainerMode),#PB_MessageRequester_Ok)
         
        Case Btn_Container_1
          ShowContainer(Container_01)
        Case Btn_Container_2
          ShowContainer(Container_02)
        Case Btn_Container_3
          ShowContainer(Container_03)
        Case Btn_Container_4
          ShowContainer(Container_04)
        Case Btn_Container_5
          ShowContainer(Container_05)
        Case Btn_Container_6
          ShowContainer(Container_06)
      EndSelect
     
     
    Case #PB_Event_Timer
      ;  TIMER
      Select EventTimer()
          ; LEER
      EndSelect
     
     
    Case #PB_Event_Menu
      ;  MENUE
      Select EventMenu()
          ; LEER
      EndSelect
     
     
    Case #WM_KEYUP 
      ; TASTEN
      Key.l = EventwParam()
      ; Debug "#KEYUP:   " + Str(EventwParam())
      Select KEY
        Case 13
          ; LEER
        Case 27
          End
      EndSelect
      ;}
  EndSelect
EndProcedure
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- R U N
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Main_Window()
ShowContainer(Container_01)
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- REPEAT
Define EventID,WindowNr,Key.l
; REPEAT
Repeat
  EventID = WaitWindowEvent()
  WindowNr = EventWindow()
  Select WindowNr
      ;{ PRESENT
    Case Main
      Main_Events(EventID,WindowNr)
      ;}
  EndSelect
ForEver
;}


Jemand einen Tip?

Gruss ... Velindos

_________________
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.43 LTS (32/64-Bit)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container als Globals
BeitragVerfasst: 21.11.2017 12:15 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Ohne es zu testen kann ich dir das Problem sagen:
Code:
For ContainerZeiger =  Container_01 To Container_06
    HideGadget(ContainerZeiger, #True)
  Next

Schau dir mal die Werte der Variablen Container_01 bis Container_06 an. Die sind nicht aufsteigend durchnummeriert wie es bei einer Enumeration ist, sondern das sind jetzt Handles, als Pointer im Heapspeicherbereich. Damit funktioniert eine For-Schleife natürlich nicht mehr.
Im Übrigens ist das kein schöner Stil die Variablennamen durchzunummerieren. Nutze besser Strukturen und Arrays. Damit sparst du viel Schreibarbeit und kannst sogar wieder deine For-Schleife benutzen.

_________________
Freakscorner.de - Der Bastelkeller | Neustes Video: Creality 3D CR-10 Review und erste Druckergebnisse
Ubuntu Gnome 16.04.3 LTS x64, PureBasic 5.60 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container als Globals
BeitragVerfasst: 21.11.2017 12:17 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
Wenn du sowieso alle Container ausblenden möchtest, kannst du auch alle Container in einem separaten Container einfügen und diesen Container ein- und ausblenden.

Deine Schleife von Container_01 bis Container_06 ist unzuverlässig. Wenn du mal alle Variablen ausgibst, wirst du feststellen, dass die zurückgegebenen IDs unterschiedlich sind, da du #PB_Any verwendest:
Zitat:
36258752
36258944
36259136
36259328
36259520
36259712


Speichere die einzelnen IDs lieber in eine LinkedList.

_________________
BildBildBildBild
Bild | EnableExplicit ist kostenlos und vermeidet Fehler | Gib Goto keine Chance | Schneller als die Telekom erlaubt | Avira? Nein Danke
WinAPI forever | Bei Problemen bitte Beispielcode posten | Mit Adblock werbefrei, schneller und sicherer surfen | brain.exe ist der beste Schutz | Userlibrary ohne Source = NoGo


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container als Globals
BeitragVerfasst: 21.11.2017 12:44 
Offline
Benutzeravatar

Registriert: 15.11.2010 10:56
Hallo, habe die Sache wie folgt gelöst und die Läuft!

Dachte mir, jemand hat bereits eine einfache Lösung, dann mal die!
Code:
;-  FKT_561_CONTAINER_004
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Compiler: PB 5.61
; Author:   Franco Velindos
; Date:     21.11.2017
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EnableExplicit
;- Const
Enumeration
 
EndEnumeration
;- Global
Global Main
Global Container_01
Global Container_02
Global Container_03
Global Container_04
Global Container_05
Global Container_06

Global StatusBar

Global Btn_Im_Container_01
Global Btn_Im_Container_02
Global Btn_Im_Container_03
Global Btn_Im_Container_04
Global Btn_Im_Container_05
Global Btn_Im_Container_06

Global Btn_Container_1
Global Btn_Container_2
Global Btn_Container_3
Global Btn_Container_4
Global Btn_Container_5
Global Btn_Container_6

Global FensterTitel$      = "Container Window"
Global flags
Global ContainerZeiger
Global ContainerMode
Global MyWindowFenster_X  = 667
Global MyWindowFenster_Y  = 732
Global MyButton_X         = (MyWindowFenster_X/6) ;111
Global MyButton_Y         = 20
;
Procedure ShowContainer2(index)
  ; Funzt nicht
  Debug "Index= " + index
  ; ???????????????????????????????????????????????
  For ContainerZeiger =  Container_01 To Container_06
    HideGadget(ContainerZeiger, #True)
  Next
  HideGadget(index, #False)
  ContainerMode = index
EndProcedure
Procedure ShowContainer(ContainerIndex)
  ; Die Funzt
  ; Alle OFF
  HideGadget(Container_01, #True)
  HideGadget(Container_02, #True)
  HideGadget(Container_03, #True)
  HideGadget(Container_04, #True)
  HideGadget(Container_05, #True)
  HideGadget(Container_06, #True)
  ; Welcher soll gechalted Werden ???
  If Container_01 = ContainerIndex
  HideGadget(Container_01, #False)
  ContainerMode = 1
  ElseIf Container_02 = ContainerIndex
  HideGadget(Container_02, #False)
  ContainerMode = 2
  ElseIf Container_03 = ContainerIndex
  HideGadget(Container_03, #False)
  ContainerMode = 3
  ElseIf Container_04 = ContainerIndex
  HideGadget(Container_04, #False)
  ContainerMode = 4
  ElseIf Container_05 = ContainerIndex
  HideGadget(Container_05, #False)
  ContainerMode = 5
  ElseIf Container_06 = ContainerIndex
  HideGadget(Container_06, #False)
  ContainerMode = 6
  EndIf
EndProcedure

Procedure Main_Window()
  ;{ Window
  flags =  #PB_Window_SystemMenu |#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_Invisible
  Main = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,MyWindowFenster_X,MyWindowFenster_Y,FensterTitel$,flags)
  ; Begrenzung auf die vorgebene Grösse
  WindowBounds(Main,MyWindowFenster_X,MyWindowFenster_Y,MyWindowFenster_X,MyWindowFenster_Y)
  ;}
  ;{ StatusBar
  StatusBar =  CreateStatusBar(#PB_Any, WindowID(Main))
  ; StatusBar 0
  AddStatusBarField(MyWindowFenster_X)   
  ;}
  ;{ [01] Container
  Container_01 = ContainerGadget(#PB_Any,0,0,MyWindowFenster_X,MyWindowFenster_Y-StatusBarHeight(StatusBar)-(MyButton_Y*2))
  Btn_Im_Container_01 = ButtonGadget(#PB_Any,(MyButton_X*0),(MyButton_Y*3), MyButton_X, MyButton_Y, "Container_01")
  CloseGadgetList()
  ;}
  ;{ [02] Container
  Container_02 = ContainerGadget(#PB_Any,0,0,MyWindowFenster_X,MyWindowFenster_Y-StatusBarHeight(StatusBar)-(MyButton_Y*2))
  Btn_Im_Container_02 = ButtonGadget(#PB_Any,(MyButton_X*1),(MyButton_Y*3), MyButton_X, MyButton_Y, "Container_02")
  CloseGadgetList()
  ;}
  ;{ [03] Container
  Container_03 = ContainerGadget(#PB_Any,0,0,MyWindowFenster_X,MyWindowFenster_Y-StatusBarHeight(StatusBar)-(MyButton_Y*2))
  Btn_Im_Container_03 = ButtonGadget(#PB_Any,(MyButton_X*2),(MyButton_Y*3), MyButton_X, MyButton_Y, "Container_03")
  CloseGadgetList()
  ;}
  ;{ [04] Container
  Container_04 = ContainerGadget(#PB_Any,0,0,MyWindowFenster_X,MyWindowFenster_Y-StatusBarHeight(StatusBar)-(MyButton_Y*2))
  Btn_Im_Container_04 = ButtonGadget(#PB_Any,(MyButton_X*3),(MyButton_Y*3), MyButton_X, MyButton_Y, "Container_04")
  CloseGadgetList()
  ;}
  ;{ [05] Container
  Container_05 = ContainerGadget(#PB_Any,0,0,MyWindowFenster_X,MyWindowFenster_Y-StatusBarHeight(StatusBar)-(MyButton_Y*2))
  Btn_Im_Container_05 = ButtonGadget(#PB_Any,(MyButton_X*4),(MyButton_Y*3), MyButton_X, MyButton_Y, "Container_05")
  CloseGadgetList()
  ;}
  ;{ [06] Container
  Container_06 = ContainerGadget(#PB_Any,0,0,MyWindowFenster_X,MyWindowFenster_Y-StatusBarHeight(StatusBar)-(MyButton_Y*2))
  Btn_Im_Container_06 = ButtonGadget(#PB_Any, (MyButton_X*5),(MyButton_Y*3), MyButton_X, MyButton_Y, "Container_06")
  CloseGadgetList()
  ;}
  ;{ Fix_Btn
  Btn_Container_1 = ButtonGadget(#PB_Any ,(MyButton_X*0),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 1")
  Btn_Container_2 = ButtonGadget(#PB_Any, (MyButton_X*1),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 2")
  Btn_Container_3 = ButtonGadget(#PB_Any, (MyButton_X*2),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 3")
  Btn_Container_4 = ButtonGadget(#PB_Any, (MyButton_X*3),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 4")
  Btn_Container_5 = ButtonGadget(#PB_Any, (MyButton_X*4),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 5")
  Btn_Container_6 = ButtonGadget(#PB_Any, (MyButton_X*5),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 6")
  ;}
  ;{ Container ON
  HideWindow(Main, #False)                                         
  ;}
EndProcedure
Procedure Main_Events(EEventID,WWindowNr)
  Static Key.l
  Select EEventID
      ;{ SELECT
    Case #PB_Event_CloseWindow
      End
    Case #PB_Event_Gadget
      ;  GADGET
      Select EventGadget()
          ; LEER
        Case Btn_Im_Container_01, Btn_Im_Container_02, Btn_Im_Container_03, Btn_Im_Container_04, Btn_Im_Container_05, Btn_Im_Container_06
          MessageRequester("Info", "Container Btn = "+Str(ContainerMode),#PB_MessageRequester_Ok)
         
        Case Btn_Container_1
          ShowContainer(Container_01)
        Case Btn_Container_2
          ShowContainer(Container_02)
        Case Btn_Container_3
          ShowContainer(Container_03)
        Case Btn_Container_4
          ShowContainer(Container_04)
        Case Btn_Container_5
          ShowContainer(Container_05)
        Case Btn_Container_6
          ShowContainer(Container_06)
      EndSelect
     
     
    Case #PB_Event_Timer
      ;  TIMER
      Select EventTimer()
          ; LEER
      EndSelect
     
     
    Case #PB_Event_Menu
      ;  MENUE
      Select EventMenu()
          ; LEER
      EndSelect
     
     
    Case #WM_KEYUP
      ; TASTEN
      Key.l = EventwParam()
      ; Debug "#KEYUP:   " + Str(EventwParam())
      Select KEY
        Case 13
          ; LEER
        Case 27
          End
      EndSelect
      ;}
  EndSelect
EndProcedure
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- R U N
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Main_Window()
ShowContainer(Container_01)
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- REPEAT
Define EventID,WindowNr,Key.l
; REPEAT
Repeat
  EventID = WaitWindowEvent()
  WindowNr = EventWindow()
  Select WindowNr
      ;{ PRESENT
    Case Main
      Main_Events(EventID,WindowNr)
      ;}
  EndSelect
ForEver
;}


Zu den Vorschlag
Zitat:
Im Übrigens ist das kein schöner Stil ...

meinst du "Global dim Btn_Im_Container(10)", geht das auch bei Gadget´s????

Des weiteren der Vorschlag
Zitat:
Deine Schleife von Container_01 bis Container_06 ist unzuverlässig. Wenn du mal alle Variablen ausgibst, wirst du feststellen, dass die zurückgegebenen IDs unterschiedlich sind, da du #PB_Any verwendest:


Wenn das Ding läuft bleiben doch die Zuordnungen, oder wie????

Noch zu Erklärung meines Vorhaben:
Ich möchte meine Containerschaltung so zerlegen, das ich die einzelnen Container über eine XIncludeFile "Z:\[Pure@Library]\Desk_Container_001.pbi" und unter Zuhilfenahme des Compilerif Befehls, sie getrennt ausprogrammieren und testen kann!

Gruss ... Velindos

PS: Wenn ich angemeldet bleibe, blockiere ich dann die Antworten?

_________________
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.43 LTS (32/64-Bit)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container als Globals
BeitragVerfasst: 21.11.2017 12:58 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
Velindos hat geschrieben:
Zitat:
Deine Schleife von Container_01 bis Container_06 ist unzuverlässig. Wenn du mal alle Variablen ausgibst, wirst du feststellen, dass die zurückgegebenen IDs unterschiedlich sind, da du #PB_Any verwendest:

Wenn das Ding läuft bleiben doch die Zuordnungen, oder wie????

Gemeint war, dass eine Zählschleife (for next) immer auf- oder absteigend zählt.
Wenn du folgendest versuchst:
Code:
For ContainerZeiger =  Container_01 To Container_06
  HideGadget(ContainerZeiger, #True)
Next

Dann versucht PB folgendes:
Code:
HideGadget(36258752, #True) ; < Gadget existiert
HideGadget(36258753, #True) ; < Gadget existiert nicht -> Fehler
HideGadget(36258754, #True) ; < Gadget existiert nicht -> Fehler
HideGadget(36258755, #True) ; < Gadget existiert nicht -> Fehler
HideGadget(36258756, #True) ; < Gadget existiert nicht -> Fehler
[...]
HideGadget(36258944, #True) ; < Gadget existiert
HideGadget(36258945, #True) ; < Gadget existiert nicht -> Fehler
HideGadget(36258946, #True) ; < Gadget existiert nicht -> Fehler
HideGadget(36258947, #True) ; < Gadget existiert nicht -> Fehler
HideGadget(36258948, #True) ; < Gadget existiert nicht -> Fehler
[...]
HideGadget(36259136, #True) ; < Gadget existiert
[...]


Erkennst du jetzt deinen Fehler?
Selbst wenn du beispielsweise eine IsGadget-Abfrage einbaust, wäre das ein Performance-Killer, da insgesamt 960 Schleifenvorgänge durchgeführt werden, nur um die 6 Gadgets zu verstecken.
Deshalb sollst du lieber nur die IDs verstecken, die auch existieren. Die IDs kannst du beispielsweise in eine LinkedList speichern oder wie du in deinem zweiten Code gemacht hast, die einzelnen IDs manuell.

_________________
BildBildBildBild
Bild | EnableExplicit ist kostenlos und vermeidet Fehler | Gib Goto keine Chance | Schneller als die Telekom erlaubt | Avira? Nein Danke
WinAPI forever | Bei Problemen bitte Beispielcode posten | Mit Adblock werbefrei, schneller und sicherer surfen | brain.exe ist der beste Schutz | Userlibrary ohne Source = NoGo


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container als Globals
BeitragVerfasst: 21.11.2017 13:08 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Eigentlich meinte ich es so. Das ist einfach. Du kannst jetzt auch mit der Konstante #maxContainer die Anzahl der Container steuern. Nur die Berechnung der Gadgetgrößen müsstest du noch anpassen.
Code:
;-  FKT_561_CONTAINER_004
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Compiler: PB 5.61
; Author:   Franco Velindos
; Date:     21.11.2017
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EnableExplicit
;- Const
Enumeration
   
EndEnumeration
;- Global
Global Main

Structure Container
   handle.i
   inButton.i
   outButton.i
EndStructure

#maxContainer = 6
Global Dim containers.Container(#maxContainer - 1)

Global StatusBar

Global FensterTitel$      = "Container Window"
Global flags
Global ContainerZeiger
Global ContainerMode
Global MyWindowFenster_X  = 667
Global MyWindowFenster_Y  = 732
Global MyButton_X         = (MyWindowFenster_X / #maxContainer) ;111
Global MyButton_Y         = 20

Procedure ShowContainer(ContainerIndex)
   Protected i.i
   For i = 0 To #maxContainer - 1
      HideGadget(containers(i)\handle, Bool(i <> ContainerIndex))
   Next
   ContainerMode = ContainerIndex
EndProcedure

Procedure Main_Window()
   ;{ Window
   flags =  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_Invisible
   Main = OpenWindow(#PB_Any, #PB_Ignore, #PB_Ignore, MyWindowFenster_X, MyWindowFenster_Y, FensterTitel$, flags)
   ; Begrenzung auf die vorgebene Grösse
   WindowBounds(Main, MyWindowFenster_X, MyWindowFenster_Y, MyWindowFenster_X, MyWindowFenster_Y)
   ;}
   ;{ StatusBar
   StatusBar =  CreateStatusBar(#PB_Any, WindowID(Main))
   ; StatusBar 0
   AddStatusBarField(MyWindowFenster_X)   
   ;}
   
   Protected i.i
   For i = 0 To #maxContainer - 1
      containers(i)\handle = ContainerGadget(#PB_Any, 0, 0, MyWindowFenster_X, MyWindowFenster_Y - StatusBarHeight(StatusBar) - (MyButton_Y * 2))
      containers(i)\inButton = ButtonGadget(#PB_Any, MyButton_X * i, MyButton_Y * 3, MyButton_X, MyButton_Y, "Container_" + RSet(Str(i + 1), 2, "0"))
      CloseGadgetList()
      containers(i)\outButton = ButtonGadget(#PB_Any , MyButton_X *i, MyWindowFenster_Y - MyButton_Y - StatusBarHeight(StatusBar), MyButton_X, MyButton_Y, "Container " + Str(i + 1))
   Next
   
   ;{ Container ON
   HideWindow(Main, #False)                                         
   ;}
EndProcedure
Procedure Main_Events(EEventID, WWindowNr)
   Protected eventGadget.i, i.i
   Static Key.l
   Select EEventID
         ;{ SELECT
      Case #PB_Event_CloseWindow
         End
      Case #PB_Event_Gadget
         ;  GADGET
         eventGadget = EventGadget()
         
         For i = 0 To #maxContainer - 1
            Select eventGadget
               Case containers(i)\inButton
                  MessageRequester("Info", "Container Btn = " + Str(i + 1), #PB_MessageRequester_Ok)
               Case containers(i)\outButton
                  ShowContainer(i)
            EndSelect
         Next
         
      Case #PB_Event_Timer
         ;  TIMER
         Select EventTimer()
               ; LEER
         EndSelect
         
         
      Case #PB_Event_Menu
         ;  MENUE
         Select EventMenu()
               ; LEER
         EndSelect
         
         
;       Case #WM_KEYUP
;          ; TASTEN
;          Key.l = EventwParam()
;          ; Debug "#KEYUP:   " + Str(EventwParam())
;          Select KEY
;             Case 13
;                ; LEER
;             Case 27
;                End
;          EndSelect
         ;}
   EndSelect
EndProcedure
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- R U N
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Main_Window()
ShowContainer(0)
;}
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;-- REPEAT
Define EventID,WindowNr,Key.l
; REPEAT
Repeat
   EventID = WaitWindowEvent()
   WindowNr = EventWindow()
   Select WindowNr
         ;{ PRESENT
      Case Main
         Main_Events(EventID,WindowNr)
         ;}
   EndSelect
ForEver
;}

Velindos hat geschrieben:
PS: Wenn ich angemeldet bleibe, blockiere ich dann die Antworten?

Ähm, nein? :? Wie sollst du das blockieren können?

_________________
Freakscorner.de - Der Bastelkeller | Neustes Video: Creality 3D CR-10 Review und erste Druckergebnisse
Ubuntu Gnome 16.04.3 LTS x64, PureBasic 5.60 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container als Globals
BeitragVerfasst: 21.11.2017 13:35 
Offline
Benutzeravatar

Registriert: 15.11.2010 10:56
Hallo,
DANKE für eure Erklärungen. Nun, da ich damit meinen Velindos steuere, änderts sich oft was an den Gadget´s in dem Container. Aus diesem Grund verliert man leicht die Übersicht am Projekt! Um das zu vermeiden habe ich vor, die Sache wie folgt zu lösen, um jeden Container einzeln testen zu können und ggf. diese Wunschgemäß einbinden zu können!

1. Ansatz:
Code:
Procedure Main_Window()
  ;{ Window
  flags =  #PB_Window_SystemMenu |#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_Invisible
  Main = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,MyWindowFenster_X,MyWindowFenster_Y,FensterTitel$,flags)
  ; Begrenzung auf die vorgebene Grösse
  WindowBounds(Main,MyWindowFenster_X,MyWindowFenster_Y,MyWindowFenster_X,MyWindowFenster_Y)
  ;}
  ;{ StatusBar
  StatusBar =  CreateStatusBar(#PB_Any, WindowID(Main))
  ; StatusBar 0
  AddStatusBarField(MyWindowFenster_X)   
  ;}
 
  ;{ [01] Container
  XIncludeFile ".\Container_001.pbi" 
  ;}
  ;{ [02] Container
  XIncludeFile ".\Container_002.pbi" 
  ;}
  ;{ [03] Container
  XIncludeFile ".\Container_003.pbi" 
  ;}
  ;{ [04] Container
  XIncludeFile ".\Container_004.pbi" 
  ;}
  ;{ [05] Container
  XIncludeFile ".\Container_005.pbi" 
  ;}
  ;{ [06] Container
  XIncludeFile ".\Container_006.pbi" 
  ;}
  ;{ Fix_Btn
  Btn_Container_1 = ButtonGadget(#PB_Any ,(MyButton_X*0),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 1")
  Btn_Container_2 = ButtonGadget(#PB_Any, (MyButton_X*1),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 2")
  Btn_Container_3 = ButtonGadget(#PB_Any, (MyButton_X*2),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 3")
  Btn_Container_4 = ButtonGadget(#PB_Any, (MyButton_X*3),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 4")
  Btn_Container_5 = ButtonGadget(#PB_Any, (MyButton_X*4),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 5")
  Btn_Container_6 = ButtonGadget(#PB_Any, (MyButton_X*5),MyWindowFenster_Y-MyButton_Y-StatusBarHeight(StatusBar), MyButton_X, MyButton_Y,"Container 6")
  ;}
  ;{ Container ON
  HideWindow(Main, #False)                                         
  ;}
EndProcedure


Des weiteren in der XIncludeFile der folgende:
Code:
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;- Container_006.pbi
;- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Compiler: PB 5.61
; Author:   Franco Velindos
; Date:     21.11.2017
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Global Dim Btn_Im_Container(10)
; XIncludeFile ".\Container_006.pbi"
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
CompilerIf #PB_Compiler_IsMainFile
  ; Nimmt OpenWindow
 
 
 
 
 
 
 
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
CompilerElse
  ;{ [06] Container
  Container_06 = ContainerGadget(#PB_Any,0,0,MyWindowFenster_X,MyWindowFenster_Y-StatusBarHeight(StatusBar)-(MyButton_Y*2))
  ; --------------------------------------
  Btn_Im_Container_06 = ButtonGadget(#PB_Any, (MyButton_X*5),(MyButton_Y*3), MyButton_X, MyButton_Y, "Container_06")
  ; --------------------------------------
  CloseGadgetList()
  ;}
CompilerEndIf
; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


Eure Vorschläge muss ich erst studieren, da ich die Struktur des Programm schnell erfassen muss, damit ich Änderunge leicht einbauen kann!

Danke für die Plausiblierung des "Globals" sowie für das Beispiel der Containerschaltung mit Struct!

Gruss ... Velindos

_________________
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.43 LTS (32/64-Bit)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Container als Globals
BeitragVerfasst: 21.11.2017 13:48 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
Velindos hat geschrieben:
PS: Wenn ich angemeldet bleibe, blockiere ich dann die Antworten?

Ach du bist es. Ich habe mich schon gewundert, warum ich ständig meine Session verliere und ausgeloggt bin. Ich musste deshalb meine Antworten schon 5x neu schreiben. Wegen dir war sogar NicTheQuick schneller als ich beim Antworten, weil ich mich erst einloggen musste.
:mrgreen:
Alles nur Spaß :)

_________________
BildBildBildBild
Bild | EnableExplicit ist kostenlos und vermeidet Fehler | Gib Goto keine Chance | Schneller als die Telekom erlaubt | Avira? Nein Danke
WinAPI forever | Bei Problemen bitte Beispielcode posten | Mit Adblock werbefrei, schneller und sicherer surfen | brain.exe ist der beste Schutz | Userlibrary ohne Source = NoGo


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

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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:  

 


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