Re: Webobjekt mit Dateiamen speichern - wie?
Verfasst: 28.11.2015 00:15
So funktioniert es bei mir:
Code: Alles auswählen
;pb-File
EnableExplicit
IncludeFile "HTML_alt_PBF.pbf"
#OLECMDEXECOPT_DODEFAULT = 0
#OLECMDEXECOPT_PROMPTUSER = 1
#OLECMDEXECOPT_DONTPROMPTUSER = 2
#OLECMDEXECOPT_SHOWHELP = 3
#OLECMDID_OPEN = 1
#OLECMDID_NEW = 2
#OLECMDID_SAVE = 3
#OLECMDID_SAVEAS = 4
#OLECMDID_SAVECOPYAS = 5
#OLECMDID_PRINT = 6
#OLECMDID_PRINTPREVIEW = 7
#VT_BSTR = 8
OpenWindow_1()
Global Filename.s, SNummer$,txtSeriennummer,string_kname,Filename$
;G$=FormatDate("%yy%mm%dd", Date()) + "001HL" ; muss in pbf
;Global G$; muss in pbf
Procedure FormularErstellen()
Protected SNummer$
SNummer$ = GetGadgetText(txtSeriennummer)
Protected HTML.s
HTML + "</head><body>"
HTML + "<div style='position:absolute; left:10mm; top:10mm; color:#000000;font-weight:bold;font-family:arial; font-size:22px;'>Formular</div>"
HTML + "<div style='position:absolute; left:60mm; top:12mm; color:#000000;font-weight:bold;font-family:arial; font-size:17px;'>Seriennummer:</div>"
HTML + "<div style='position:absolute; left:100mm; top:12mm; color:#000000;font-family:arial; font-size:17px;'>"+SNummer$+"</div>"
HTML + "</body></html>"
SetGadgetItemText(#Adresse, #PB_Web_HtmlCode, HTML)
EndProcedure
Procedure FormularDrucken(Filename.s)
Protected WebObject.IWebBrowser2
WebObject = GetWindowLongPtr_(GadgetID(#Adresse), #GWL_USERDATA)
Protected filename_Unicode
; convert to unicode
filename_Unicode = AllocateMemory(Len(Filename) * 2 + 2)
MultiByteToWideChar_(#CP_ACP, 0, @Filename, -1, filename_Unicode, Len(Filename) * 2 + 2)
Protected filename_BSTR
; create bstr
filename_BSTR = SysAllocString_(filename_Unicode)
; fill variant
Protected VariantIn.VARIANT
VariantIn\vt = #VT_BSTR
VariantIn\bstrVal = filename_BSTR
If GetGadgetState(Checkbox_1)=#PB_Checkbox_Checked
WebObject\ExecWB(#OLECMDID_PRINT, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0)
Else
WebObject\ExecWB(#OLECMDID_PRINT, #OLECMDEXECOPT_PROMPTUSER, 0, 0)
EndIf
FreeMemory(filename_Unicode)
SysFreeString_(filename_BSTR)
EndProcedure
Procedure FormularSpeichern(Filename.s)
Protected WebObject.IWebBrowser2
WebObject = GetWindowLong_(GadgetID(#Adresse), #GWL_USERDATA)
Protected filename_Unicode
filename_Unicode = AllocateMemory(StringByteLength(Filename.s, #PB_Unicode) + 2)
PokeS(filename_Unicode, Filename, -1, #PB_Unicode)
Protected filename_BSTR
; create bstr
filename_BSTR = SysAllocString_(filename_Unicode)
; fill variant
Protected VariantIn.VARIANT
VariantIn\vt = #VT_BSTR
VariantIn\bstrVal = filename_BSTR
If WebObject\ExecWB(#OLECMDID_SAVEAS, #OLECMDEXECOPT_DONTPROMPTUSER, @VariantIn, 0) = #S_OK
MessageRequester("","Formular wurde gespeichert !")
Else
MessageRequester("","Formular wurde nicht gespeichert !")
EndIf
FreeMemory(filename_Unicode)
SysFreeString_(filename_BSTR)
EndProcedure
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case Button_machhtml
Filename.s = SNummer$
FormularErstellen()
Case Button_Speichern
SNummer$ = GetGadgetText(txtSeriennummer)
Filename.s = SNummer$
FormularSpeichern(Filename.s)
Case Button_Drucken
SNummer$ = GetGadgetText(txtSeriennummer)
Filename.s = SNummer$
FormularDrucken(Filename.s)
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case Window_1
Break
EndSelect
EndSelect
ForEver