Webobjekt mit Dateiamen speichern - wie?
Re: Webobjekt mit Dateiamen speichern - wie?
Moin, danke für die Meldungen und Meinungen - ich verstehe jetzt nun nur noch Bahnhof
Re: Webobjekt mit Dateiamen speichern - wie?
Hat keiner eine Antwort auf meine Frage?
Re: Webobjekt mit Dateiamen speichern - wie?
ähm Kiffi beantwortete deine Frage und der Rest hat nur versucht, das ganze etwas aufzumotzen 
Du solltest die Posts auch lesen und nicht nur überfliegen... da stehen wichtige Sachen drin (wenn du dann
Kiffis Antwort umsetzen möchtest)

Du solltest die Posts auch lesen und nicht nur überfliegen... da stehen wichtige Sachen drin (wenn du dann
Kiffis Antwort umsetzen möchtest)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
Re: Webobjekt mit Dateiamen speichern - wie?
Danke an Alle und für die "Kopfwäsche", funktioniert nun.
Re: Webobjekt mit Dateiamen speichern - wie?
Moin,
ich habe nun versucht die Druckroutine mit Filenamen zu versehen, aber irgendwo hat sich ein Fehler eingeschlichen. Ich möchte auch PDF mit Filename erstellen. Wo habe ich den Fehler gemacht?
ich habe nun versucht die Druckroutine mit Filenamen zu versehen, aber irgendwo hat sich ein Fehler eingeschlichen. Ich möchte auch PDF mit Filename erstellen. Wo habe ich den Fehler gemacht?
Code: Alles auswählen
Procedure FormularDrucken(Filename.s)
Protected WebObject.IWebBrowser2
WebObject = GetWindowLong_(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
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Webobjekt mit Dateiamen speichern - wie?
Da mir der restliche Code zum sofortigem ausführen fehlt, hier mal erratene Lösung:
Code: Alles auswählen
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, @VariantIn, 0)
Else
WebObject\ExecWB(#OLECMDID_PRINT, #OLECMDEXECOPT_PROMPTUSER, @VariantIn, 0)
EndIf
FreeMemory(filename_Unicode)
SysFreeString_(filename_BSTR)
EndProcedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Webobjekt mit Dateiamen speichern - wie?
Hallo ts-soft, habe den geänderten Code ausprobiert und es wird kein Drucker angesprochen.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Webobjekt mit Dateiamen speichern - wie?
Ich hab leider keinen, sofort ausführbaren Code zur Verfügung und werde den auch nicht selber schreiben.
Entweder Du lieferst den nach, auf ein minimum reduziert, oder jemand anders macht das.
So bin ich leider nicht in der Lage was zu testen. Weiß ja noch nicht mal, ob:als Globale Variable existiert oder vielleicht doch ein Konstanter Wert, und nur das # vergessen.
Entweder Du lieferst den nach, auf ein minimum reduziert, oder jemand anders macht das.
So bin ich leider nicht in der Lage was zu testen. Weiß ja noch nicht mal, ob:
Code: Alles auswählen
GetGadgetState(Checkbox_1)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Webobjekt mit Dateiamen speichern - wie?
Code: Alles auswählen
GetGadgetState(Checkbox_1)
Aus Krankheitsgründen liefere ich einen minimierten Code später nach. Danke!
Re: Webobjekt mit Dateiamen speichern - wie?
Hier ist der minimale Code. Speichern mit Namen funktioniert, jedoch die Druckroutine nicht. Bei der Druckroutine soll der Filename auch übergeben werden, da für PDF -Druck benötigt wird.
Was fehlt in der Procedure Formulardrucken (Filename.s) oder ist falsch?
Leider muss händisch in das pbf-File:
Global G$
G$=FormatDate("%yy%mm%dd", Date()) + "001HL"
eingefügt werden.
Was fehlt in der Procedure Formulardrucken (Filename.s) oder ist falsch?
Leider muss händisch in das pbf-File:
Global G$
G$=FormatDate("%yy%mm%dd", Date()) + "001HL"
eingefügt werden.
Code: Alles auswählen
;pb-File
EnableExplicit
IncludeFile "HTML_alt_PBF.pbf"
#OLECMDID_PRINT = 6
#OLECMDEXECOPT_DONTPROMPTUSER = 2
#OLECMDID_PRINTPREVIEW = 7
#OLECMDEXECOPT_PROMPTUSER = 3
#OLECMDID_SAVEAS = 4
#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, @VariantIn, 0)
Else
WebObject\ExecWB(#OLECMDID_PRINT, #OLECMDEXECOPT_PROMPTUSER, @VariantIn, 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
Code: Alles auswählen
;pbf-file
Global Window_1
Global Button_machhtml, lblSeriennummer, txtSeriennummer, Text_2, Text_3, Button_Drucken, Button_Speichern, Checkbox_1,G$
Enumeration FormGadget
#Adresse
EndEnumeration
Enumeration FormFont
#Font_Window_1_0
EndEnumeration
LoadFont(#Font_Window_1_0,"Arial Narrow", 18)
G$=FormatDate("%yy%mm%dd", Date()) + "001HL"
Procedure OpenWindow_1(x = 0, y = 0, width = 960, height = 200)
Window_1 = OpenWindow(#PB_Any, x, y, width, height, "Formular Erstellung", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
Button_machhtml = ButtonGadget(#PB_Any, 610, 80, 100, 25, "Formular erstellen")
GadgetToolTip(Button_machhtml, "erzeugt eine html-Datei")
lblSeriennummer = TextGadget(#PB_Any, 614, 50, 86, 20, "Seriennummer:")
txtSeriennummer = StringGadget(#PB_Any, 724, 45, 105, 25, G$)
Text_2 = TextGadget(#PB_Any, 630, 10, 340, 30, "Formulareingaben:")
SetGadgetFont(Text_2, FontID(#Font_Window_1_0))
Text_3 = TextGadget(#PB_Any, 10, 10, 300, 30, "Formular:")
SetGadgetFont(Text_3, FontID(#Font_Window_1_0))
Button_Drucken = ButtonGadget(#PB_Any, 725, 80, 100, 25, "Formular drucken")
Button_Speichern = ButtonGadget(#PB_Any, 840, 80, 100, 25, "Formular speichern")
WebGadget(#Adresse, 10, 45, 590, 105, "about:blank")
Checkbox_1 = CheckBoxGadget(#PB_Any, 610, 120, 110, 25, "Standarddrucker")
EndProcedure