add panel per knopfdruck.

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
jpd
Beiträge: 380
Registriert: 14.02.2005 10:33

add panel per knopfdruck.

Beitrag von jpd »

Hallo PBler,

möchte gerne per knopf druck ein neues panel im panelgadget hinzufügen,

leider wird bei mermaligen clicken der vorherige überschrieben.

eine idee?

Danke
jpd

Code: Alles auswählen

Enumeration 
  #Window_Main 
  #Gadget_String 
  #Gadget_Editor 
  #StatusBar_0
  #Image_green
  #Image_red
  #pan_1
  #add_comp
EndEnumeration
Global WindowWidth = 640 ,  WindowHeight = 480 
Procedure add_panel(win.l,test.l)
  If CreateGadgetList(WindowID(win)) 
      pan_handle.l=PanelGadget (#PB_Any,10,55,WindowWidth-20,WindowHeight-85)
      AddGadgetItem (pan_handle,-1 + test,"Mail"+Str(test))
      EditorGadget(#Gadget_Editor, 10, 10, WindowWidth - 50, WindowHeight - 130) 
      CloseGadgetList()
  EndIf     
 EndProcedure

Procedure open_win()
  WindowTitle.s = "add tab" 
  If OpenWindow(#Window_Main, 0, 0, WindowWidth, WindowHeight, WindowTitle, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered) 
    CreateStatusBar(#StatusBar_0, WindowID(#Window_Main))
  
    If CreateGadgetList(WindowID(#Window_Main)) 
      StringGadget(#Gadget_String, 10, 10, WindowWidth - 20, 20, "") 
      ButtonGadget(#add_comp, 10, 30, WindowWidth - 20, 20, "Add Computer")
    EndIf 
    Quit = #False 
  EndIf 
EndProcedure


open_win()

Repeat 

  Select WaitWindowEvent() 
 
      Case #PB_Event_Gadget 
        Select EventGadget() 
          Case   #add_comp
            add_panel(#Window_Main,i)
            i=i+1
        EndSelect 
      Case #PB_Event_CloseWindow 
        Quit = #True 
     
  EndSelect 
Until Quit 
 
PB 5.10 Windows 7 x64
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

AddGadgetItem()
Nicht jedesmal ein neues Gadget erstellen, das kann nicht gehen :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
jpd
Beiträge: 380
Registriert: 14.02.2005 10:33

Beitrag von jpd »

Hallo TS-Soft,

manchmal ist man einfach nur blind (oder zu blöd) :freak: !!

hier die neue variante!

Code: Alles auswählen


Enumeration 
  #Window_Main 
  #Gadget_String 
  #Gadget_Editor 
  #StatusBar_0
  #Image_green
  #Image_red
  #pan_1
  #add_comp
EndEnumeration
Global WindowWidth = 640 ,  WindowHeight = 480 
Procedure.l add_panel(test.l)
 
     
      AddGadgetItem (#pan_1 ,-1 + test,"Mail"+Str(test))
        editorID =EditorGadget(#PB_Any, 10, 10, WindowWidth - 50, WindowHeight - 130) 
      ;CloseGadgetList()
      ProcedureReturn editorID
 EndProcedure

Procedure open_win()
  WindowTitle.s = "add tab" 
  If OpenWindow(#Window_Main, 0, 0, WindowWidth, WindowHeight, WindowTitle, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered) 
    CreateStatusBar(#StatusBar_0, WindowID(#Window_Main))
  
    If CreateGadgetList(WindowID(#Window_Main)) 
     
      StringGadget(#Gadget_String, 10, 10, WindowWidth - 20, 20, "") 
      ButtonGadget(#add_comp, 10, 30, WindowWidth - 20, 20, "Add Computer")
      PanelGadget (#pan_1,10,55,WindowWidth-20,WindowHeight-85)
    EndIf 
    Quit = #False 
  EndIf 
EndProcedure


open_win()

Repeat 

  Select WaitWindowEvent() 
 
      Case #PB_Event_Gadget 
        Select EventGadget() 
          Case   #add_comp
            editorid=add_panel(i)
            Debug editorid
            Debug i
            i=i+1
        EndSelect 
      Case #PB_Event_CloseWindow 
        Quit = #True 
     
  EndSelect 
Until Quit 
Vielen Dank

jpd
PB 5.10 Windows 7 x64
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Jetzt mußte noch dafür sorgen, das auch das letzte Tab aktiviert wird, ansonsten hängt er zwar hinten an, aber den focus hat ein verkehrter :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
jpd
Beiträge: 380
Registriert: 14.02.2005 10:33

Beitrag von jpd »

Hi TS-Soft,

danke, durch deine tipps ist dieser beispiel einigermaßen brauchbar geworden.

Für mich auf jeden fall. :mrgreen:

jpd

Code: Alles auswählen

Enumeration 
  #Window_Main 
  #Gadget_String 
  #Gadget_Editor 
  #StatusBar_0
  #Image_green
  #Image_red
  #pan_1
  #add_comp
EndEnumeration
Global WindowWidth = 640 ,  WindowHeight = 480 
Procedure.l add_panel(test.l)
  AddGadgetItem (#pan_1 , test,"Mail"+Str(test))
  SetGadgetState(#pan_1,test)
  editorID =EditorGadget(#PB_Any, 10, 10, WindowWidth - 50, WindowHeight - 130) 
  ProcedureReturn editorID
 EndProcedure

Procedure open_win()
  WindowTitle.s = "add tab" 
  If OpenWindow(#Window_Main, 0, 0, WindowWidth, WindowHeight, WindowTitle, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered) 
    CreateStatusBar(#StatusBar_0, WindowID(#Window_Main))
  
    If CreateGadgetList(WindowID(#Window_Main)) 
     
      StringGadget(#Gadget_String, 10, 10, WindowWidth - 20, 20, "") 
      ButtonGadget(#add_comp, 10, 30, WindowWidth - 20, 20, "Add Computer")
      PanelGadget (#pan_1,10,55,WindowWidth-20,WindowHeight-85)
    EndIf 
    Quit = #False 
  EndIf 
EndProcedure


open_win()

Repeat 

  Select WaitWindowEvent() 
 
      Case #PB_Event_Gadget 
        Select EventGadget() 
          Case   #add_comp
            editorid=add_panel(i)
            Debug editorid
            Debug i
            i=i+1
        EndSelect 
      Case #PB_Event_CloseWindow 
        Quit = #True 
     
  EndSelect 
Until Quit 

PB 5.10 Windows 7 x64
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ich verstehe zwar deinen code nicht, vor allem das i, aber es scheint zu
funktionieren, das ist ja erstmal wichtig :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Solange der Compiler ihn versteht, ist ja alles in Butter. Code soll ja auch nicht wartungsfreundlich, sondern kryptisch sein. Code eben, kein Text. ;)
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

das "i" ist nur der Zähler für die Beschriftung:
Mail0, Mail1,....
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
jpd
Beiträge: 380
Registriert: 14.02.2005 10:33

CMD in a Box

Beitrag von jpd »

Hallo,
hatte vor lange zeit folgendes gepostet...

http://www.purebasic.fr/german/viewtopi ... highlight=

mittlerweile habe ich das so ausgebaut das ich befehle remote über TCP auf ein system ausführe, ziel ist über unterschiedliche tabs die verbundene computer anzuzeigen (i) und in den editorgadget die jewailigen outputs anzeigen.

hoffe das in den nächsten 2 bis drei jahre vielleicht auch 4, fertig bin. :lol:

Ciao
jpd
PB 5.10 Windows 7 x64
Antworten