Seite 1 von 1
ListIcon + WebGadget
Verfasst: 10.09.2010 09:57
von H.Brill
Hallo,
Ich suche eine Möglichkeit, ein ListIcon über
ein WebGadget auszudrucken, kenne mich aber
in HTML nicht so aus.
Am besten wäre eine Procedure, die die GadgetID()
vom ListIcon entgegen nimmt und daraus eine einfache
HTML-Tabelle mit Spaltenüberschriften und Inhalt generiert.
Hat jemand schon sowas gemacht oder gesehen ?
PS:
Das Drucken des Webgadgets habe ich schon bei
PureArea.net gefunden.
Re: ListIcon + WebGadget
Verfasst: 10.09.2010 10:21
von Kiffi
so in etwa:
Code: Alles auswählen
EnableExplicit
Enumeration
#myWindow
EndEnumeration
Enumeration
#myListIconGadget
#myWebGadget
EndEnumeration
Procedure CountListiconColumn(gadget, maxcolumn, keyword.s)
; Marco2007:
; http://www.purebasic.fr/english/viewtopic.php?p=310714#p310714
Protected ColCounter
If IsGadget(gadget)
AddGadgetColumn(gadget, maxcolumn, keyword, 0)
For ColCounter = 0 To maxcolumn
If GetGadgetItemText(gadget, -1, ColCounter) = keyword
Break
EndIf
Next
RemoveGadgetColumn(gadget, ColCounter)
ProcedureReturn ColCounter
EndIf
EndProcedure
Procedure ListIconGadgetToWebGadget(ListIconGadgetId, WebGadgetId)
Protected CountColumns, CountRows
Protected RowCounter, ColCounter
Protected HTML.s
CountColumns = CountListiconColumn(ListIconGadgetId, 255, "uniquekeyword0815") - 1
CountRows = CountGadgetItems(ListIconGadgetId) - 1
HTML = "<html><body><table border='1'>"
HTML + "<tr>"
For ColCounter = 0 To CountColumns
HTML + "<th>" + GetGadgetItemText(ListIconGadgetId, -1, ColCounter) + "</th>"
Next
HTML + "</tr>"
For RowCounter = 0 To CountRows
HTML + "<tr>"
For ColCounter = 0 To CountColumns
HTML + "<td>" + GetGadgetItemText(ListIconGadgetId, RowCounter, ColCounter) + "</td>"
Next
HTML + "</tr>"
Next
HTML + "</table></body></html>"
SetGadgetItemText(WebGadgetId, #PB_Web_HtmlCode, HTML)
EndProcedure
Define RowCounter, ColCounter
Define Line.s
OpenWindow(#myWindow, #PB_Any, #PB_Any, 800, 615, "")
ListIconGadget(#myListIconGadget, 5, 5, 790, 300, "column1", 60)
; Beispielcolumns erzeugen
For ColCounter = 2 To 10
AddGadgetColumn(#myListIconGadget, ColCounter - 1, "column" + Str(Colcounter), 60)
Next
; Beispielzeilen erzeugen
For RowCounter = 1 To 20
Line = ""
For ColCounter=1 To 10
Line + Str(RowCounter) + "\" + Str(ColCounter)
If ColCounter < 10
Line + #LF$
EndIf
Next
AddGadgetItem(#myListIconGadget, -1, Line)
Next
WebGadget(#myWebGadget, 5, 310, 790, 300, "")
ListIconGadgetToWebGadget(#myListIconGadget, #myWebGadget)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Grüße ... Kiffi
Re: ListIcon + WebGadget
Verfasst: 10.09.2010 12:01
von H.Brill
Danke,
fast schon perfekt.
Wenn ich EnableExplicit eingeschaltet habe,
kommt bei dieser Zeile eine Fehlermeldung
Code: Alles auswählen
WebObject.IWebBrowser2 = GetWindowLong_(GadgetID(#myWebGadget), #GWL_USERDATA)
Wie muß ich denn WebObject.IWebBrowser2 definieren ?
Code: Alles auswählen
;EnableExplicit
Enumeration
#myWindow
EndEnumeration
Enumeration
#myListIconGadget
#myWebGadget
EndEnumeration
Enumeration 1
#OLECMDID_OPEN
#OLECMDID_NEW
#OLECMDID_SAVE
#OLECMDID_SAVEAS
#OLECMDID_SAVECOPYAS
#OLECMDID_PRINT
#OLECMDID_PRINTPREVIEW
#OLECMDID_PAGESETUP
#OLECMDID_SPELL
#OLECMDID_PROPERTIES
#OLECMDID_CUT
#OLECMDID_COPY
#OLECMDID_PASTE
#OLECMDID_PASTESPECIAL
#OLECMDID_UNDO
#OLECMDID_REDO
#OLECMDID_SELECTALL
#OLECMDID_CLEARSELECTION
#OLECMDID_ZOOM
#OLECMDID_GETZOOMRANGE
#OLECMDID_UPDATECOMMANDS
#OLECMDID_REFRESH
#OLECMDID_STOP
#OLECMDID_HIDETOOLBARS
#OLECMDID_SETPROGRESSMAX
#OLECMDID_SETPROGRESSPOS
#OLECMDID_SETPROGRESSTEXT
#OLECMDID_SETTITLE
#OLECMDID_SETDOWNLOADSTATE
#OLECMDID_STOPDOWNLOAD
EndEnumeration
Enumeration 0
#OLECMDEXECOPT_DODEFAULT
#OLECMDEXECOPT_PROMPTUSER
#OLECMDEXECOPT_DONTPROMPTUSER
#OLECMDEXECOPT_SHOWHELP
EndEnumeration
Procedure CountListiconColumn(gadget, maxcolumn, keyword.s)
; Marco2007:
; http://www.purebasic.fr/english/viewtopic.php?p=310714#p310714
Protected ColCounter
If IsGadget(gadget)
AddGadgetColumn(gadget, maxcolumn, keyword, 0)
For ColCounter = 0 To maxcolumn
If GetGadgetItemText(gadget, -1, ColCounter) = keyword
Break
EndIf
Next
RemoveGadgetColumn(gadget, ColCounter)
ProcedureReturn ColCounter
EndIf
EndProcedure
Procedure ListIconGadgetToWebGadget(ListIconGadgetId, WebGadgetId)
Protected CountColumns, CountRows
Protected RowCounter, ColCounter
Protected HTML.s
CountColumns = CountListiconColumn(ListIconGadgetId, 255, "uniquekeyword0815") - 1
CountRows = CountGadgetItems(ListIconGadgetId) - 1
HTML = "<html><body><table border='1'>"
HTML + "<tr>"
For ColCounter = 0 To CountColumns
HTML + "<th>" + GetGadgetItemText(ListIconGadgetId, -1, ColCounter) + "</th>"
Next
HTML + "</tr>"
For RowCounter = 0 To CountRows
HTML + "<tr>"
For ColCounter = 0 To CountColumns
HTML + "<td>" + GetGadgetItemText(ListIconGadgetId, RowCounter, ColCounter) + "</td>"
Next
HTML + "</tr>"
Next
HTML + "</table></body></html>"
SetGadgetItemText(WebGadgetId, #PB_Web_HtmlCode, HTML)
EndProcedure
Define RowCounter, ColCounter
Define Line.s
#Button = 2
OpenWindow(#myWindow, #PB_Any, #PB_Any, 800, 615, "")
ButtonGadget(#Button, 10, 10, 60, 20, "Print")
ListIconGadget(#myListIconGadget, 5, 35, 790, 250, "column1", 60)
; Beispielcolumns erzeugen
For ColCounter = 2 To 10
AddGadgetColumn(#myListIconGadget, ColCounter - 1, "column" + Str(Colcounter), 60)
Next
; Beispielzeilen erzeugen
For RowCounter = 1 To 20
Line = ""
For ColCounter=1 To 10
Line + Str(RowCounter) + "\" + Str(ColCounter)
If ColCounter < 10
Line + #LF$
EndIf
Next
AddGadgetItem(#myListIconGadget, -1, Line)
Next
WebGadget(#myWebGadget, 5, 330, 790, 300, "")
WebObject.IWebBrowser2 = GetWindowLong_(GadgetID(#myWebGadget), #GWL_USERDATA)
ListIconGadgetToWebGadget(#myListIconGadget, #myWebGadget)
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget And EventGadget() = #Button
; Send the Print Command to the WebGadget:
WebObject\ExecWB(#OLECMDID_PRINT, #OLECMDEXECOPT_PROMPTUSER, 0, 0)
; using #OLECMDEXECOPT_DONTPROMPTUSER as second argument will print without
; the printrequester.
EndIf
Until WaitWindowEvent() = #PB_Event_CloseWindow
Re: ListIcon + WebGadget
Verfasst: 10.09.2010 12:31
von Kiffi
H.Brill hat geschrieben:Wie muß ich denn WebObject.IWebBrowser2 definieren ?
Grüße ... Kiffi
Re: ListIcon + WebGadget
Verfasst: 10.09.2010 13:27
von H.Brill
Danke, paßt.
vorläufig letzte Frage zur Perfektion :
Könnte man beim Erstellen des HTML-Gadgets
die Breite der einzelnen Spalten des Listicongadgets
mit berücksichtigen ?
Also, wenn ich unterschiedlich breite Spalten habe,
daß diese auch im Webgadget so dargestellt werden ?
Weiß nicht, ob das Table-Tag sowas hergibt.
Re: ListIcon + WebGadget
Verfasst: 10.09.2010 13:36
von STARGÅTE
Mit
Breite = GetGadgetItemAttribute(#Gadget, Eintrag, #PB_ListIcon_ColumnWidth , Spalte)
kannst du die einzelne Spaltenbreite des ListIconGadgets ermitteln.
Dieser Wert kann dann einfach in den Kopf der Tabellen
Code: Alles auswählen
HTML + "<tr>"
For ColCounter = 0 To CountColumns
Breite = GetGadgetItemAttribute(ListIconGadgetId, -1, #PB_ListIcon_ColumnWidth, ColCounter)
HTML + "<th width="+Str(Breite)+">" + GetGadgetItemText(ListIconGadgetId, -1, ColCounter) + "</th>"
Next
HTML + "</tr>"
ggf. noch etwas vergrößern je nach Schriftart ...
Re: ListIcon + WebGadget
Verfasst: 10.09.2010 17:38
von H.Brill
Danke euch beiden, es funktioniert.