[Module] ListEx - Gadget(All OS)

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Beitrag von RSBasic »

Den Effekt hatte ich gestern auch, aber wenn man jetzt auf die Seite geht, kann man es ohne Login downloaden.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Bisonte
Beiträge: 2430
Registriert: 01.04.2007 20:18

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Beitrag von Bisonte »

Das scheint wohl traffic-bedingt zu sein... wenn man sich die AGB's von dem Laden mal anschaut...
PureBasic 6.10 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​​
Oliver13
Beiträge: 35
Registriert: 08.05.2010 15:49

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Beitrag von Oliver13 »

Hallo Thorsten1867,
erstmal ganz vielen Dank, daß Du die tollen Gadgets bereitstellst.

Ich habe noch ein paar Bugs gefunden, mit nachstehendem Quick&Dirty Code solltest Du das reproduzieren können:

- Wenn ListExModul zusammen mit ButtonEx verwendet wird -> alle Buttons werden bei Mausberührung automatisch geklickt
- Gehe mit der Maus über Button1, ohne zuvor einen Listeneintrag selektiert zu haben -> Absturz in "GetItemID"
- Resize des ListExModule funktioniert nciht, wenn es in einem Panel platziert ist

Code: Alles auswählen

XIncludeFile "ListEx\listexmodule.pbi"
XIncludeFile "ButtonEx\buttonexmodule.pbi"

DisableExplicit

Global NewMap mgadgets()

Procedure handler_main_SizeWindow()
  mw=WindowWidth(mgadgets("main"))
  ResizeGadget(mgadgets("header"),#PB_Ignore,#PB_Ignore,mw,#PB_Ignore)
   ResizeGadget(mgadgets("btn_1"),mw-(GadgetWidth(mgadgets("btn_1"))+10),#PB_Ignore,#PB_Ignore,#PB_Ignore)
  ResizeGadget(mgadgets("btn_4"),mw-(GadgetWidth(mgadgets("btn_4"))+10),#PB_Ignore,#PB_Ignore,#PB_Ignore)
  ResizeGadget(mgadgets("btn_2"),mw-(GadgetWidth(mgadgets("btn_2"))+10),#PB_Ignore,#PB_Ignore,#PB_Ignore)
  ResizeGadget(mgadgets("btn_3"),mw-(GadgetWidth(mgadgets("btn_3"))+10),#PB_Ignore,#PB_Ignore,#PB_Ignore)
 EndProcedure
 
 Procedure OpenDataWindow(sid$)
  mw=1000: mh=600
  If IsWindow(mgadgets("datalist"))
    ProcedureReturn
  EndIf
  
  mgadgets("datalist")= OpenWindow(#PB_Any, 0, 0, mw, mh, sid$, #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
  
  If IsWindow(mgadgets("datalist"))
    WindowBounds(mgadgets("datalist"), 800, 600,#PB_Ignore ,#PB_Ignore ) 
    
    bw=100: bh=30
    mgadgets("btn_datalist_ok")=    ButtonEx::Gadget(#PB_Any, mw-(bw+10), mh-(bh+20), bw, bh, "OK", ButtonEx::#MacOS, mgadgets("datalist")) ; ButtonEx::#MacOS
    DisableGadget(mgadgets("btn_1"),#True)
    cy=10
    mgadgets("list2")=  ListEx::Gadget(#PB_Any, 10, cy, mw-20, mh-(20+bh+20), "", 25, "", ListEx::#GridLines|ListEx::#NumberedColumn|ListEx::#AutoResize) ; ListEx::#NoRowHeader|ListEx::#MultiSelect|ListEx::#NumberedColumn|ListEx::#n|ListEx::#SingleClickEdit|ListEx::#AutoResize 
    ListEx::DisableReDraw(mgadgets("list2"), #True) 
    
    ListEx::AddColumn(mgadgets("list2"), ListEx::#LastItem, "1",  150,"",ListEx::#Dates)
    ListEx::AddColumn(mgadgets("list2"), ListEx::#LastItem, "2",  150)
    ListEx::AddColumn(mgadgets("list2"), ListEx::#LastItem, "3",  150)
    
    
    ListEx::ClearItems(mgadgets("list2"))
    
    Protected NewMap mcols.s()
    ClearMap(mcols())
    mcols("datasource")="Test"
    mcols("values")="102"
    mcols("timerange")=FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Val(mcols("timestamp")))+"-"+FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Val(mcols("timestamp")))
    ListEx::AddItem(mgadgets("list2"), ListEx::#LastItem, FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Val(mcols("timestamp")))+ #LF$ +mcols("id") + #LF$ + mcols("datasource")+#LF$ +mcols("values")+#LF$ +mcols("timerange")+#LF$+ mcols("datatypes")+#LF$+mcols("status"))
    ListEx::SetItemID(mgadgets("list2"), ListEx::countitems(mgadgets("list2"))-1,mcols("id"))
    ListEx::AddItem(mgadgets("list2"), ListEx::#LastItem, FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Val(mcols("timestamp")))+ #LF$ +mcols("id") + #LF$ + mcols("datasource")+#LF$ +mcols("values")+#LF$ +mcols("timerange")+#LF$+ mcols("datatypes")+#LF$+mcols("status"))
    ListEx::SetItemID(mgadgets("list2"), ListEx::countitems(mgadgets("list2"))-1,mcols("id"))
    
    
    
    ListEx::DisableReDraw(mgadgets("list2"), #False) 
    
    
  EndIf
  
  
  
  
EndProcedure


Procedure OpenMainWindow()
  mw=1000: mh=600
  mgadgets("font1")=LoadFont(#PB_Any, "Arial",10,#PB_Font_HighQuality)
  
  mgadgets("fonttop1")=LoadFont(#PB_Any, "Arial",10,#PB_Font_HighQuality)
  mgadgets("fonttop2")=LoadFont(#PB_Any, "Arial",10,#PB_Font_HighQuality)
  
  
  mgadgets("main")= OpenWindow(#PB_Any, 0, 0, mw, mh, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
  If IsWindow(mgadgets("main"))
    WindowBounds(mgadgets("main"), 800, 600,#PB_Ignore ,#PB_Ignore ) 
    
    cy=40
    mgadgets("header")=CanvasGadget(#PB_Any,0,0,mw,cy,#PB_Canvas_Container)
    CloseGadgetList()
    
    
    
    
    
    bw=100: bh=30
    cy+30
    mgadgets("btn_1")=    ButtonEx::Gadget(#PB_Any, mw-(bw+10), cy, bw, bh, "#1", ButtonEx::#MacOS, mgadgets("main")) ; ButtonEx::#MacOS
    
    cy+bh+10
    mgadgets("btn_2")=    ButtonEx::Gadget(#PB_Any, mw-(bw+10), cy, bw, bh, "#2", ButtonEx::#MacOS, mgadgets("main")) ; ButtonEx::#MacOS
    
    cy+20
    
    cy+bh+10
    mgadgets("btn_3")=    ButtonEx::Gadget(#PB_Any, mw-(bw+10), cy, bw, bh, "#3", ButtonEx::#MacOS, mgadgets("main")) ; ButtonEx::#MacOS
    
    cy+bh+10
    mgadgets("btn_4")=    ButtonEx::Gadget(#PB_Any, mw-(bw+10), cy, bw, bh, "#4", ButtonEx::#MacOS, mgadgets("main")) ; ButtonEx::#MacOS
    
    
    
    cy= GadgetY(mgadgets("btn_1"))
    
    mgadgets("panel")=PanelGadget(#PB_Any, 10, cy, mw-150, mh-(cy+120))
    AddGadgetItem (mgadgets("panel"), -1, "Panel 1") 
    
    mgadgets("list")=  ListEx::Gadget(#PB_Any, 10, cy, GetGadgetAttribute(mgadgets("panel"), #PB_Panel_ItemWidth),GetGadgetAttribute(mgadgets("panel"), #PB_Panel_ItemHeight), "", 25, "", ListEx::#GridLines|ListEx::#NumberedColumn|ListEx::#AutoResize|ListEx::#ThreeState) ; ListEx::#NoRowHeader|ListEx::#MultiSelect|ListEx::#NumberedColumn|ListEx::#n|ListEx::#SingleClickEdit|ListEx::#AutoResize 
    ListEx::DisableReDraw(mgadgets("list"), #True) 
    
    ListEx::AddColumn(mgadgets("list"), ListEx::#LastItem, "Col1",  150,"",ListEx::#Text)
    ListEx::AddColumn(mgadgets("list"), ListEx::#LastItem, "Col2", 100,"",ListEx::#Text)
    ListEx::AddColumn(mgadgets("list"), ListEx::#LastItem, "Col3", 100,"",ListEx::#Text)
    ListEx::AddColumn(mgadgets("list"), ListEx::#LastItem, "Col4.", 80,"",ListEx::#Text)
    ListEx::AddColumn(mgadgets("list"), ListEx::#LastItem, "Col5", 50,"",ListEx::#Number)
    ListEx::SetAutoResizeColumn(mgadgets("list"), 2, 100)
    ;    ListEx::SetAutoResizeColumn(mgadgets("list"), 3, 100)
    
    ListEx::AddColumn(mgadgets("list"), ListEx::#LastItem, "Col6", 140,"",ListEx::#Text|ListEx::#SortArrows)
    ListEx::AddColumn(mgadgets("list"), ListEx::#LastItem, "", 5,"")
    
    ListEx::SetAutoResizeColumn(mgadgets("list"), 7, 5)
    ;
    
    ListEx::SetHeaderAttribute(mgadgets("list"), ListEx::#Align, ListEx::#Center)
    ListEx::SetHeaderSort(mgadgets("list"), 1, ListEx::#Ascending, ListEx::#Deutsch)
    ListEx::SetHeaderSort(mgadgets("list"), 2, ListEx::#Ascending, ListEx::#Deutsch)
    ListEx::SetHeaderSort(mgadgets("list"), 3, ListEx::#Ascending, ListEx::#Deutsch)
    ListEx::SetColor(mgadgets("list"), ListEx::#AlternateRowColor, $FBF7F5)
    
    ListEx::SetHeaderSort(mgadgets("list"), 5, ListEx::#Ascending)
    ListEx::SetHeaderSort(mgadgets("list"), 6, ListEx::#Ascending)
    ListEx::DisableReDraw(mgadgets("list"), #False) 
    ListEx::SetFont(mgadgets("list"), FontID(mgadgets("font1")))
    
    ListEx::AddItem(mgadgets("list"), ListEx::#LastItem, "ID1"+ #LF$ +"Test" + #LF$ + "Test"+#LF$ + "Test"+#LF$ +"10"+#LF$+ FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Date())+#LF$)
    ListEx::SetItemID(mgadgets("list"), ListEx::countitems(mgadgets("list"))-1,"ID1")
    
    ListEx::AddItem(mgadgets("list"), ListEx::#LastItem, "ID2"+ #LF$ +"Test" + #LF$ + "Test"+#LF$ + "Test"+#LF$ +"10"+#LF$+ FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Date())+#LF$)
    ListEx::SetItemID(mgadgets("list"), ListEx::countitems(mgadgets("list"))-1,"ID2")
    
    ListEx::DisableReDraw(mgadgets("list"), #False)    
    CloseGadgetList()
    
    cy+mh-(cy+120)+20
    mgadgets("list1")=  ListEx::Gadget(#PB_Any, 10, cy, mw-150,60, "", 25, "", ListEx::#GridLines|ListEx::#NumberedColumn|ListEx::#AutoResize|ListEx::#ThreeState) ; ListEx::#NoRowHeader|ListEx::#MultiSelect|ListEx::#NumberedColumn|ListEx::#n|ListEx::#SingleClickEdit|ListEx::#AutoResize 
    ListEx::DisableReDraw(mgadgets("list1"), #True) 
    
    ListEx::AddColumn(mgadgets("list1"), ListEx::#LastItem, "Col1",  150,"",ListEx::#Text)
    ListEx::AddColumn(mgadgets("list1"), ListEx::#LastItem, "Col2", 100,"",ListEx::#Text)
    ListEx::AddColumn(mgadgets("list1"), ListEx::#LastItem, "Col3", 100,"",ListEx::#Text)
    ListEx::AddColumn(mgadgets("list1"), ListEx::#LastItem, "Col4.", 80,"",ListEx::#Text)
    ListEx::AddColumn(mgadgets("list1"), ListEx::#LastItem, "Col5", 50,"",ListEx::#Number)
    ListEx::SetAutoResizeColumn(mgadgets("list1"), 2, 100)
    ;    ListEx::SetAutoResizeColumn(mgadgets("list1"), 3, 100)
    
    ListEx::AddColumn(mgadgets("list1"), ListEx::#LastItem, "Col6", 140,"",ListEx::#Text|ListEx::#SortArrows)
    ListEx::AddColumn(mgadgets("list1"), ListEx::#LastItem, "", 5,"")
    
    ListEx::SetAutoResizeColumn(mgadgets("list1"), 7, 5)
    ;
    
    ListEx::SetHeaderAttribute(mgadgets("list1"), ListEx::#Align, ListEx::#Center)
    ListEx::SetHeaderSort(mgadgets("list1"), 1, ListEx::#Ascending, ListEx::#Deutsch)
    ListEx::SetHeaderSort(mgadgets("list1"), 2, ListEx::#Ascending, ListEx::#Deutsch)
    ListEx::SetHeaderSort(mgadgets("list1"), 3, ListEx::#Ascending, ListEx::#Deutsch)
    ListEx::SetColor(mgadgets("list1"), ListEx::#AlternateRowColor, $FBF7F5)
    
    ListEx::SetHeaderSort(mgadgets("list1"), 5, ListEx::#Ascending)
    ListEx::SetHeaderSort(mgadgets("list1"), 6, ListEx::#Ascending)
    ListEx::DisableReDraw(mgadgets("list1"), #False) 
    ListEx::SetFont(mgadgets("list1"), FontID(mgadgets("font1")))
    
    ListEx::AddItem(mgadgets("list1"), ListEx::#LastItem, "ID1"+ #LF$ +"Test" + #LF$ + "Test"+#LF$ + "Test"+#LF$ +"10"+#LF$+ FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Date())+#LF$)
    ListEx::SetItemID(mgadgets("list1"), ListEx::countitems(mgadgets("list1"))-1,"ID1")
    
    ListEx::AddItem(mgadgets("list1"), ListEx::#LastItem, "ID2"+ #LF$ +"Test" + #LF$ + "Test"+#LF$ + "Test"+#LF$ +"10"+#LF$+ FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Date())+#LF$)
    ListEx::SetItemID(mgadgets("list1"), ListEx::countitems(mgadgets("list1"))-1,"ID2")
    
    ListEx::DisableReDraw(mgadgets("list1"), #False)    
  EndIf
  
  
  BindEvent(#PB_Event_SizeWindow,@handler_main_SizeWindow(),mgadgets("main"))
  PostEvent(#PB_Event_SizeWindow,mgadgets("main"),0)
  
  
EndProcedure

Procedure Main()
  Protected bQuit
  Repeat
    Event = WaitWindowEvent(10)
    EventWin=EventWindow()
    
    Select EventWin
      Case  mgadgets("datalist")
        Select Event
          Case  #PB_Event_CloseWindow     
            If IsWindow(mgadgets("datalist"))
              CloseWindow(mgadgets("datalist"))
              DisableGadget(mgadgets("btn_1"),#False)
            EndIf
          Case #PB_Event_Gadget
            Select EventGadget()
              Case mgadgets("btn_datalist_ok")
                PostEvent(#PB_Event_CloseWindow ,mgadgets("datalist"),0)
                
            EndSelect
            
        EndSelect
        
        
        
      Case  mgadgets("main")
        Select Event
          Case ListEx::#Event_Gadget ; works with or without EventType()
            If EventType() = ListEx::#EventType_Row
              Debug ">>> Row: " + Str(EventData())
            EndIf
          Case  #PB_Event_CloseWindow     
            bQuit=#True
            
            
            
          Case #PB_Event_Gadget
            Select EventGadget()
              Case mgadgets("btn_1")
                iRow=ListEx::getstate(mgadgets("list"))
                sid$=ListEx::getitemid(mgadgets("list"),iRow)
                OpenDataWindow(sid$)
                
              Case mgadgets("list")      ;{ only in use with EventType()
                
                
            EndSelect
        EndSelect ;}
    EndSelect
    
    
  Until bQuit=#True

EndProcedure

OpenMainWindow()
Main()
Dann noch eine Anregung für das pbPDF-Module:
Es wäre gut, wenn man nicht nur neues PDF anlegen, sondern eine existierende PDF auch öffnen könnte: dadurch könnte man einfach Vorlagen realisieren.
Momentan löse ich das so, dass ich das als Vorlage gewünschte PDF als Grafik speichere und dann in einem neuem pbPDF quasi als Hintergrund zeichne, das führt aber zu unnötig grossen Dateien


Danke und viele Grüsse
Oliver
Benutzeravatar
Thorsten1867
Beiträge: 1359
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Beitrag von Thorsten1867 »

Oliver13 hat geschrieben:Hallo Thorsten1867,
erstmal ganz vielen Dank, daß Du die tollen Gadgets bereitstellst.

Ich habe noch ein paar Bugs gefunden, mit nachstehendem Quick&Dirty Code solltest Du das reproduzieren können:

- Wenn ListExModul zusammen mit ButtonEx verwendet wird -> alle Buttons werden bei Mausberührung automatisch geklickt
- Gehe mit der Maus über Button1, ohne zuvor einen Listeneintrag selektiert zu haben -> Absturz in "GetItemID"
- Resize des ListExModule funktioniert nciht, wenn es in einem Panel platziert ist
Ich fürchte, es handelt sich bei den beschriebenen Problemen um keine wirklichen Bugs.
Bei der Gelegenheit habe ich aber trotzdem einen kleinen Bug in den PostEvents von ButtonEx gefunden und behoben. Da ich gerade dabei war, habe ich auch noch AutoResize hinzugefügt.

- Ein CanvasGadget sendet bei jeder Mausbewegung einen Event. Daher der Hinweis im Beispielcode "only in use with EventType()" (#PB_Event_Gadget)
- Absturz: Wenn du "-1" als Zeile übergibst, stürzt SelectElement() ab, daher sollte man immer überprüfen, ob ein Element selektiert wurde.
- Resize funktioniert nur, wenn ListEX eine korrekte Window-Nummer erhalten hat.

Anbei deinen Beispielcode, so wie ich ihn getestet habe:

Code: Alles auswählen

XIncludeFile "listexmodule.pbi"
XIncludeFile "buttonexmodule.pbi"

EnableExplicit

Enumeration Windows 1 
  #MainWindow
  #DataList
EndEnumeration

Enumeration Gadgets 1
  #Header
  #Btn_1
  #Btn_2
  #Btn_3
  #Btn_4
  #Panel
  #List
  #List1
  #List2
  #Btn_DataList_OK
EndEnumeration

Enumeration Fonts 1
  #Font1
  #FontTop1
  #FontTop2
EndEnumeration

LoadFont(#Font1,    "Arial", 10, #PB_Font_HighQuality)
LoadFont(#FontTop1, "Arial", 10, #PB_Font_HighQuality)
LoadFont(#FontTop2, "Arial", 10, #PB_Font_HighQuality)

Procedure handler_main_SizeWindow()
  Define.i mw
  mw=WindowWidth(#MainWindow)
  ResizeGadget(#Header ,#PB_Ignore,#PB_Ignore,mw,#PB_Ignore)
  ResizeGadget(#Panel  ,#PB_Ignore,#PB_Ignore,mw-150,#PB_Ignore)
 EndProcedure

Procedure OpenDataWindow(sid$)
  Define.i cy
  Define.i mw=1000, mh=600, bw=100, bh=30
  NewMap mcols.s()
  
  If IsWindow(#DataList) : ProcedureReturn #False : EndIf
  
  If OpenWindow(#DataList, 0, 0, mw, mh, sid$, #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)

    WindowBounds(#DataList, 800, 600, #PB_Ignore ,#PB_Ignore ) 

    ButtonEx::Gadget(#Btn_DataList_OK, mw-(bw+10), mh-(bh+20), bw, bh, "OK", ButtonEx::#MacOS|ButtonEx::#AutoResize, #DataList)
    ButtonEx::SetAutoResizeFlags(#Btn_DataList_OK, ButtonEx::#MoveX)
    
    If IsWindow(#MainWindow) : DisableGadget(#Btn_1, #True) : EndIf
    
    cy=10
    
    If ListEx::Gadget(#List2, 10, cy, mw-20, mh-(20+bh+20), "", 25, "", ListEx::#GridLines|ListEx::#NumberedColumn|ListEx::#AutoResize)
      
      ListEx::DisableReDraw(#List2, #True) 
      
      ListEx::AddColumn(#List2, ListEx::#LastItem, "1",  150,"", ListEx::#Dates)
      ListEx::AddColumn(#List2, ListEx::#LastItem, "2",  150)
      ListEx::AddColumn(#List2, ListEx::#LastItem, "3",  150)
      ;ListEx::ClearItems(#List2) ???
      
      ;ClearMap(mcols())          ???
      mcols("datasource") = "Test"
      mcols("values") = "102"
      mcols("timerange")=FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Val(mcols("timestamp")))+"-"+FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Val(mcols("timestamp")))
      
      ListEx::AddItem(#List2, ListEx::#LastItem, FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Val(mcols("timestamp")))+ #LF$ +mcols("id") + #LF$ + mcols("datasource")+#LF$ +mcols("values")+#LF$ +mcols("timerange")+#LF$+ mcols("datatypes")+#LF$+mcols("status"), mcols("id"))
      ListEx::AddItem(#List2, ListEx::#LastItem, FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Val(mcols("timestamp")))+ #LF$ +mcols("id") + #LF$ + mcols("datasource")+#LF$ +mcols("values")+#LF$ +mcols("timerange")+#LF$+ mcols("datatypes")+#LF$+mcols("status"), mcols("id"))

      ListEx::DisableReDraw(#List2, #False) 
    EndIf
    
    ProcedureReturn #True
  EndIf

EndProcedure

Procedure OpenMainWindow()
  Define.i cy
  Define.i mw=1000, mh=600, bw=100, bh=30

  If OpenWindow(#MainWindow, 0, 0, mw, mh, "Test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
    
    WindowBounds(#MainWindow, 800, 600, #PB_Ignore, #PB_Ignore ) 
    
    cy=40
    
    If CanvasGadget(#Header, 0, 0, mw, cy, #PB_Canvas_Container)
      CloseGadgetList()
    EndIf

    cy+30
    ButtonEx::Gadget(#Btn_1, mw-(bw+10), cy, bw, bh, "#1", ButtonEx::#MacOS|ButtonEx::#AutoResize, #MainWindow)
    ButtonEx::SetAutoResizeFlags(#Btn_1, ButtonEx::#MoveX)
    cy+bh+10
    ButtonEx::Gadget(#Btn_2, mw-(bw+10), cy, bw, bh, "#2", ButtonEx::#MacOS|ButtonEx::#AutoResize, #MainWindow)
    ButtonEx::SetAutoResizeFlags(#Btn_2, ButtonEx::#MoveX)
    cy+20
    cy+bh+10
    ButtonEx::Gadget(#Btn_3, mw-(bw+10), cy, bw, bh, "#3", ButtonEx::#MacOS|ButtonEx::#AutoResize, #MainWindow)
    ButtonEx::SetAutoResizeFlags(#Btn_3, ButtonEx::#MoveX)
    cy+bh+10
    ButtonEx::Gadget(#Btn_4, mw-(bw+10), cy, bw, bh, "#4", ButtonEx::#MacOS|ButtonEx::#AutoResize, #MainWindow)
    ButtonEx::SetAutoResizeFlags(#Btn_4, ButtonEx::#MoveX)
    cy = GadgetY(#Btn_1)
    
    If PanelGadget(#Panel, 10, cy, mw-150, mh-(cy+120))
      AddGadgetItem (#Panel, -1, "Panel 1") 
    
      If ListEx::Gadget(#List, 10, cy, GetGadgetAttribute(#Panel, #PB_Panel_ItemWidth) - 20, GetGadgetAttribute(#Panel, #PB_Panel_ItemHeight) - cy - 10, "", 25, "", ListEx::#GridLines|ListEx::#NumberedColumn|ListEx::#AutoResize|ListEx::#ThreeState, #MainWindow)
      
        ListEx::DisableReDraw(#List, #True) 
        
        ListEx::AddColumn(#List, ListEx::#LastItem, "Col1", 150,"", ListEx::#Text)
        ListEx::AddColumn(#List, ListEx::#LastItem, "Col2", 200,"", ListEx::#Text)
        ListEx::AddColumn(#List, ListEx::#LastItem, "Col3", 100,"", ListEx::#Text)
        ListEx::AddColumn(#List, ListEx::#LastItem, "Col4.", 80,"", ListEx::#Text)
        ListEx::AddColumn(#List, ListEx::#LastItem, "Col5",  50,"", ListEx::#Number)
        ListEx::AddColumn(#List, ListEx::#LastItem, "Col6", 140,"",ListEx::#Text|ListEx::#SortArrows)
        ListEx::AddColumn(#List, ListEx::#LastItem, "", 77,"")
  
        ListEx::SetHeaderAttribute(#List, ListEx::#Align, ListEx::#Center)
        
        ListEx::SetHeaderSort(#List, 1, ListEx::#Ascending, ListEx::#Deutsch)
        ListEx::SetHeaderSort(#List, 2, ListEx::#Ascending, ListEx::#Deutsch)
        ListEx::SetHeaderSort(#List, 3, ListEx::#Ascending, ListEx::#Deutsch)
        ListEx::SetHeaderSort(#List, 5, ListEx::#Ascending)
        ListEx::SetHeaderSort(#List, 6, ListEx::#Ascending)
        
        ListEx::SetColor(#List, ListEx::#AlternateRowColor, $FBF7F5)
        ListEx::SetFont(#List, FontID(#Font1))
    
        ListEx::AddItem(#List, ListEx::#LastItem, "ID1"+ #LF$ +"Test" + #LF$ + "Test"+#LF$ + "Test"+#LF$ +"10"+#LF$+ FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss", Date())+#LF$, "ID1")
        ListEx::AddItem(#List, ListEx::#LastItem, "ID2"+ #LF$ +"Test" + #LF$ + "Test"+#LF$ + "Test"+#LF$ +"10"+#LF$+ FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss", Date())+#LF$, "ID2")
  
        ListEx::DisableReDraw(#List, #False)
        
        ListEx::SetAutoResizeColumn(#List, 7, 5)
        
      EndIf 
      
      CloseGadgetList()
    EndIf
    
    cy + mh-(cy+120) + 20

    If ListEx::Gadget(#List1, 10, cy, mw-150, 60, "", 25, "", ListEx::#GridLines|ListEx::#NumberedColumn|ListEx::#AutoResize|ListEx::#ThreeState, #MainWindow)
      
      ListEx::DisableReDraw(#List1, #True) 
      
      ListEx::AddColumn(#List1, ListEx::#LastItem, "Col1", 150,"", ListEx::#Text)
      ListEx::AddColumn(#List1, ListEx::#LastItem, "Col2", 100,"", ListEx::#Text)
      ListEx::AddColumn(#List1, ListEx::#LastItem, "Col3", 100,"", ListEx::#Text)
      ListEx::AddColumn(#List1, ListEx::#LastItem, "Col4.", 80,"", ListEx::#Text)
      ListEx::AddColumn(#List1, ListEx::#LastItem, "Col5",  50,"", ListEx::#Number)
      ListEx::AddColumn(#List1, ListEx::#LastItem, "Col6", 140,"", ListEx::#Text|ListEx::#SortArrows)
      ListEx::AddColumn(#List1, ListEx::#LastItem, "", 77,"")
      ListEx::SetAutoResizeColumn(#List1, 2, 100)  ; entweder 2 oder 7 

      ListEx::SetHeaderAttribute(#List1, ListEx::#Align, ListEx::#Center)
      
      ListEx::SetHeaderSort(#List1, 1, ListEx::#Ascending, ListEx::#Deutsch)
      ListEx::SetHeaderSort(#List1, 2, ListEx::#Ascending, ListEx::#Deutsch)
      ListEx::SetHeaderSort(#List1, 3, ListEx::#Ascending, ListEx::#Deutsch)
      ListEx::SetHeaderSort(#List1, 5, ListEx::#Ascending)
      ListEx::SetHeaderSort(#List1, 6, ListEx::#Ascending)
      
      ListEx::SetColor(#List1, ListEx::#AlternateRowColor, $FBF7F5)
      ListEx::SetFont(#List1, FontID(#Font1))
    
      ListEx::AddItem(#List1, ListEx::#LastItem, "ID1"+ #LF$ +"Test" + #LF$ + "Test"+#LF$ + "Test"+#LF$ +"10"+#LF$ + FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Date())+#LF$, "ID1")
      ListEx::AddItem(#List1, ListEx::#LastItem, "ID2"+ #LF$ +"Test" + #LF$ + "Test"+#LF$ + "Test"+#LF$ +"10"+#LF$ + FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss",Date())+#LF$, "ID2")
      
      ListEx::DisableReDraw(#List1, #False)  
      
      ListEx::SetAutoResizeColumn(#List1, 7, 5)
    EndIf
    
    BindEvent(#PB_Event_SizeWindow,@handler_main_SizeWindow(), #MainWindow)
    
    ProcedureReturn #True
  EndIf
  
EndProcedure

Procedure DataWindow(sid$)
  Define.i bQuit = #False
  
  If OpenDataWindow(sid$)
    
    Repeat
      Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
          If EventWindow() = #DataList
            If IsWindow(#MainWindow) : DisableGadget(#Btn_1, #False) : EndIf
            bQuit = #True
          EndIf 
        Case ButtonEx::#Event_Gadget
          Select EventGadget()
            Case #Btn_DataList_OK
              bQuit = #True
              ; PostEvent(#PB_Event_CloseWindow, #DataList, 0) ; ???
          EndSelect
      EndSelect
    Until bQuit
    
    CloseWindow(#DataList)  
  EndIf
  
EndProcedure

Procedure MainWindow()
  Define.s sid$
  Define.i iRow, bQuit = #False
  
  If OpenMainWindow()
    
    Repeat
      Select WaitWindowEvent()
        Case #PB_Event_CloseWindow
          If EventWindow() = #MainWindow
            bQuit=#True
          EndIf 
        Case ListEx::#Event_Gadget
          Select EventGadget()
            Case #List
              If EventType() = ListEx::#EventType_Row
                Debug ">>> Row: " + Str(EventData())
              EndIf
            Case #List1
              
          EndSelect
        Case #PB_Event_Gadget
          Select EventGadget()
            Case #Btn_1 ; only in use with EventType()
              If EventType() = ButtonEx::#EventType_Button
                iRow = ListEx::GetState(#List)
                If iRow >= 0
                  sid$ = ListEx::GetItemID(#List, iRow)
                  DataWindow(sid$)
                EndIf
              EndIf
            Case #Btn_2 ; only in use with EventType()
              If EventType() = ButtonEx::#EventType_Button
                
              EndIf
            Case #Btn_3 ; only in use with EventType()
              If EventType() = ButtonEx::#EventType_Button
                
              EndIf
            Case #Btn_4 ; only in use with EventType()
              If EventType() = ButtonEx::#EventType_Button
                
              EndIf
          EndSelect
      EndSelect
    Until bQuit

    CloseWindow(#MainWindow)  
  EndIf

EndProcedure

MainWindow()
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
Thorsten1867
Beiträge: 1359
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Beitrag von Thorsten1867 »

Oliver13 hat geschrieben: Dann noch eine Anregung für das pbPDF-Module:
Es wäre gut, wenn man nicht nur neues PDF anlegen, sondern eine existierende PDF auch öffnen könnte: dadurch könnte man einfach Vorlagen realisieren.
Momentan löse ich das so, dass ich das als Vorlage gewünschte PDF als Grafik speichere und dann in einem neuem pbPDF quasi als Hintergrund zeichne, das führt aber zu unnötig grossen Dateien
Ein existierendes PDF lässt sich leider nicht so einfach einlesen, denn dass ist eine Wissenschaft für sich und hätte vermutlich einen umfangreicheren Code als das ganze pbPDF-Module zur Folge. Vielleicht kannst du ja die Formular-Funktionen nutzen, um ein PDF nachträglich zu ändern.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Oliver13
Beiträge: 35
Registriert: 08.05.2010 15:49

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Beitrag von Oliver13 »

Thorsten1867 hat geschrieben:
Ich fürchte, es handelt sich bei den beschriebenen Problemen um keine wirklichen Bugs.
Bei der Gelegenheit habe ich aber trotzdem einen kleinen Bug in den PostEvents von ButtonEx gefunden und behoben. Da ich gerade dabei war, habe ich auch noch AutoResize hinzugefügt.
Da hatte ich wohl einen Denkfehler.. Sorry, und danke für den Hinweis,. Jetzt läuft es problemlos.
Oliver13
Beiträge: 35
Registriert: 08.05.2010 15:49

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Beitrag von Oliver13 »

Thorsten1867 hat geschrieben: Ein existierendes PDF lässt sich leider nicht so einfach einlesen, denn dass ist eine Wissenschaft für sich und hätte vermutlich einen umfangreicheren Code als das ganze pbPDF-Module zur Folge. Vielleicht kannst du ja die Formular-Funktionen nutzen, um ein PDF nachträglich zu ändern.
Schade - ich dachte, daß man die mit pbPDF erzeugten Zeichenoperationen einfach hinter den im PDF bereits vorhandenen Ausgaben anfügen bzw. in die Datei schreiben könnte.
Benutzeravatar
Thorsten1867
Beiträge: 1359
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Beitrag von Thorsten1867 »

Oliver13 hat geschrieben:Schade - ich dachte, daß man die mit pbPDF erzeugten Zeichenoperationen einfach hinter den im PDF bereits vorhandenen Ausgaben anfügen bzw. in die Datei schreiben könnte.
Es sind lauter Objekte, die alle auf andere Objekte verweisen und dann muss der Offset in Byte jedes Objektes vom Anfang des PDFs an neu berechnet werden, um nur ein paar Beispiele zu nennen.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
Thorsten1867
Beiträge: 1359
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Beitrag von Thorsten1867 »

Update:
  • neues Flag #FitColumn für AddColumn()
  • Align & Font für einzelne Spalten der Kopfzeile
  • SetHeaderHeight() hinzugefügt
  • SetFont() & SetColor() für einzelne Spalten
  • SetFont() um Typparameter ergänzt (#HeaderFont/#StringFont/#GadgetFont)
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Benutzeravatar
Thorsten1867
Beiträge: 1359
Registriert: 04.02.2005 15:40
Computerausstattung: [Windows 10 x64] [PB V5.7x]
Wohnort: Kaufbeuren
Kontaktdaten:

Re: [Module] Editier- und sortierbares ListenGadget (All OS)

Beitrag von Thorsten1867 »

Update: CloseEdit() - schließt die alle Zellen, die zum Bearbeiten geöffnet sind (StringGadget / ComboBox / DateGadget) und speichert die Änderungen.
Download of PureBasic - Module
Download of PureBasic - Programmes

[Windows 11 x64] [PB V6]

Bild
Antworten