[Module] ListEx - Gadget(All OS)
Re: [Module] Editier- und sortierbares ListenGadget (All OS)
Den Effekt hatte ich gestern auch, aber wenn man jetzt auf die Seite geht, kann man es ohne Login downloaden.
Re: [Module] Editier- und sortierbares ListenGadget (All OS)
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
Re: [Module] Editier- und sortierbares ListenGadget (All OS)
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
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
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()
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
- 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)
Ich fürchte, es handelt sich bei den beschriebenen Problemen um keine wirklichen Bugs.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
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()
- 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)
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.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
Re: [Module] Editier- und sortierbares ListenGadget (All OS)
Da hatte ich wohl einen Denkfehler.. Sorry, und danke für den Hinweis,. Jetzt läuft es problemlos.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.
Re: [Module] Editier- und sortierbares ListenGadget (All OS)
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.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.
- 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)
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.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.
- 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)
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)
- 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)
Update: CloseEdit() - schließt die alle Zellen, die zum Bearbeiten geöffnet sind (StringGadget / ComboBox / DateGadget) und speichert die Änderungen.