Re: [Module] Editier- und sortierbares ListenGadget (All OS)
Verfasst: 13.06.2019 08:10
Den Effekt hatte ich gestern auch, aber wenn man jetzt auf die Seite geht, kann man es ohne Login downloaden.
Das deutsche PureBasic-Forum
http://forums.purebasic.com/german/
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()
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
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()
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
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.
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.
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.