MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 12.11.2017, 17:33   #1
oliverzier
Neuer Benutzer
Neuer Benutzer
Standard Acc2013 - Formular mit Webbrowser Steuerelement

Hallo Zusammen,

ich habe folgendes Problem:
Ein Formular soll inklusive Webbrowser Steuerelement gedruckt werden.
Das Formular enthält dazu einen Button, der aktuell den Inhalt des Webbrowser Steuerelements sowie das Formular einzeln druckt:

Code:

'Nur Webbrowser Steuerelement Drucken
Dim objIE As SHDocVw.InternetExplorer
Set objIE = Me.Webbrowser20.Object
objIE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DOPROMPTUSER

'Formular ohne Map drucken
DoCmd.SelectObject acForm, Me.Form.Name, True
'DoCmd.PrintOut acPrintAll
DoCmd.RunCommand acCmdPrint
Ist es möglich, das Formular inklusive des Webbrowser Steuerelements in einem Dokument zu drucken?
oliverzier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.11.2017, 18:12   #2
markusxy
MOF Koryphäe
MOF Koryphäe
Standard

http://www.ms-office-forum.net/forum...d.php?t=149406
Vielleicht hilfts dir.

Edit:
Beides in einem wird nicht so ohne weiteres gehen.
Das Thema wurde ja schon öfter behandelt.
Ich gehe jetzt mal davon aus, das du vor dem Posten auch bereits gesucht hast.
Die üblichen Lösungen:
Einen Report erstellen und das Bild des WebControls einbinden (welchen Weg auch immer du für das Erstellen des Bildes wählst.)
Jedenfalls kenne ich keine fertige komfortable Lösung dafür.

LG Markus

Geändert von markusxy (12.11.2017 um 18:21 Uhr).
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.11.2017, 10:30   #3
oliverzier
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Sehr gute Idee mit dem Screenshot!

Leider scheitere ich aber an folgendem Beispiel:
http://www.vbarchiv.net/tipps/tipp_1...erstellen.html

Ich bekomme immer einen Syntaxfehler bei:
Code:

oBitmap = New Bitmap(.Width, .Height)
Als Verweise habe ich System_Windows_Forms sowie System.Drawing.dll eingetragen.
oliverzier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.11.2017, 12:57   #4
Steffen0815
MOF Meister
MOF Meister
Standard

Hallo,
der Code ist für vb.net und lässt sich so nicht auf VBA/Vb6 übertragen.

Was ist den der Inhalt von deinem WB-Element? Nur eine Bild oder eine komplette Website?

__________________

Gruß Steffen
Steffen0815 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.11.2017, 14:12   #5
markusxy
MOF Koryphäe
MOF Koryphäe
Standard

@oliverzier,
wie Steffen schon sagt, ist der Code für VB.net.
Es sollten sich auch VBA Beispiele finden lassen, ist wie immer etwas Aufwändiger.

Beim ScreenShot hast du natürlich die Auflösung und den Ausschnitt des Monitors und das unkomprimiert.
Der Zweck sollte also tatsächlich geklärt sein.
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.11.2017, 08:12   #6
oliverzier
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Vielen Dank für die Antworten. Ich habe ein anderes Screenshot Bsp. ausprobiert.

Aber da es ja leider abhängig von der Auflösung ist, muss ich den Plan verwefen und mit der Lösung der beiden blätter lesen?
oliverzier ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.11.2017, 09:12   #7
markusxy
MOF Koryphäe
MOF Koryphäe
Standard

Zitat: von oliverzier Beitrag anzeigen

und mit der Lösung der beiden blätter lesen?

Es macht keinen Sinn darauf einzugehen, so lange die näheren Umstände unklar sind. Grundsätzlich kann man die Auflösung natürlich einfach ändern (siehe Link), falls das den Zweck erfüllt.
Falls es ein Bild ist, kann man es aber auch einfach direkt runterladen, oder den Download des temp Ordners verwenden.

LG Markus
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.11.2017, 16:32   #8
CatboyJones
MOF User
MOF User
Standard

Hi!

Ich habe Dir ein Demo erstellt, in dem ein "ScreenShot" von einem
WebBrowserControl erstellt wird, und dieses in einem
ImageControl angezeigt wird.

Damit solltest Du Dein Problem lösen können.

WebBrowserControlToImage.zip

Gruss
Jones
CatboyJones ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.11.2017, 17:03   #9
markusxy
MOF Koryphäe
MOF Koryphäe
Standard

@Jones,
cooles Beispiel.
Kannst du mir vielleicht sagen, wie ich ein gespeichertes Bild jpeg/BMP in den DC laden könnte um es z.B. im Bild Steuerelement anzuzeigen.

Wichtig wäre mir einfach das Bild von der Festplatte zu lesen und per BitBlt zu einem bestehenden DC hinzuzufügen.
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.11.2017, 20:56   #10
CatboyJones
MOF User
MOF User
Standard

Hi Markus!

Eigentlich sollte es so funktionieren. In einem Formular einer A02-MDB mach
ich es so und es läuft auf A07. Jetzt hatte ich das in A07 noch mal in einem
neuen Form verkürzt und da stürzt das Ding beim zweiten
GetEnhMetaFileBits ab.

Vlt. läufts bei Dir, sonst weiß ich's auch nicht.

Code:

Public Sub TestMarkus(oImage As Control, sFilePath As String)
Dim hDC As Long, hDCMeta As Long, hMetaFile As Long
Dim oStdPic As StdPicture
Dim BMInfo As BITMAP
Dim lLength As Long
Dim aPicture() As Byte

Set oStdPic = StdFunctions.LoadPicture("D:\Test\50cent.jpg")

hDC = CreateCompatibleDC(0)

hDCMeta = CreateEnhMetaFile(hDC, vbNullString, 0&, vbNullString)

Call SelectObject(hDC, oStdPic)
Call GetObjectAPI(oStdPic, Len(BMInfo), BMInfo)

Call BitBlt(hDCMeta, 0&, 0&, BMInfo.bmWidth, BMInfo.bmHeight, hDC, 0, 0, SRCCOPY)

hMetaFile = CloseEnhMetaFile(hDCMeta)
lLength = GetEnhMetaFileBits(hMetaFile, 0, ByVal 0&)
If lLength > 0 Then
    ReDim Buffer(lLength - 1 + 8)
    Call GetEnhMetaFileBits(hMetaFile, lLength, Buffer(8))
    Buffer(0) = CF_ENHMETAFILE
    oImage.PictureData = Buffer
End If

out:
If hMetaFile Then
    Call DeleteEnhMetaFile(hMetaFile)
End If
If (oStdPic Is Nothing) = False Then
    Call DeleteObject(oStdPic)
End If
If hDC Then Call DeleteDC(hDC)

End Sub
Gruss
Jones
CatboyJones ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.11.2017, 00:05   #11
CatboyJones
MOF User
MOF User
Standard

Hi!

Dieses Demo funktioniert auf jeden Fall.

LoadPictureToImageControl.zip

(Dass ich hier nicht StdFunctions.LoadPicture verwende macht nicht den Unterschied.
Die verwendete Methode hat nur den Vorteil, dass man auch Long-Binary-Werte
aus einer Tabelle verwenden kann.)

Gruss
Jones

Geändert von CatboyJones (15.11.2017 um 00:08 Uhr).
CatboyJones ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.11.2017, 07:43   #12
markusxy
MOF Koryphäe
MOF Koryphäe
Standard

@Jones,
danke werde ich mir ansehen.
Ich vermute, dass es ein Problem bei BMP's mit einer Farbpalette gibt. Jedenfalls scheitert da schon das Laden. Ich ein zweit Tagen weiß ich mehr.
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.11.2017, 11:23   #13
CatboyJones
MOF User
MOF User
Standard

@Markus
Bei mir geht es auch mit einem bmp mit 256 Farben.
Da sollte es eigentlich keine Probleme geben.

DIBs kann man auch direkt in einen DC bekommen.

Code:

Dim BIH256 As BITMAPINFO256

SplitBitMapStream barray(), BFH, BIH, bPicData()
BIH256.bmiHeader = BIH

hDCref = GetDC(0)
hDC = CreateCompatibleDC(hDCref)

hBitMap = CreateDIBitmap(hDCref, BIH256.bmiHeader, CBM_INIT, bPicData(0), BIH256, 0)
hObjOld = SelectObject(hDC, hBitMap)

' ToDo

If hObjOld Then SelectObject hDC, hObjOld
If hBitMap Then DeleteObject hBitMap
If hDCref Then ReleaseDC 0, hDCref
If hDC Then DeleteDC hDC


Private Function SplitBitMapStream(bStream() As Byte, BFH As BITMAPFILEHEADER, _
                                   BIH As BITMAPINFOHEADER, bPicData() As Byte) As Boolean
CopyMemory ByVal VarPtr(BFH.bfType), bStream(0), 2

If BFH.bfType = 19778 Then
    CopyMemory ByVal VarPtr(BFH.bfSize), bStream(2), Len(BFH) - 2
    CopyMemory ByVal VarPtr(BIH), bStream(Len(BFH)), Len(BIH)
    ReDim bPicData(BIH.biSizeImage - 1)
    CopyMemory bPicData(0), bStream(BFH.bfOffBits), BIH.biSizeImage
End If

End Function

Und so bekommt man es dann wieder:

Code:

Dim BIH256 As BITMAPINFO256

GetDIBits256 hDC, hBitMap, 0, BIH256.bmiHeader.biHeight, bPicData(0), BIH256, 0

ReDim barray(Len(BIH256.bmiHeader) + BIH256.bmiHeader.biSizeImage - 1)
CreateShortBitMapStream barray(), BIH256.bmiHeader, bPicData()


Private Function CreateShortBitMapStream(barray() As Byte, BIH As BITMAPINFOHEADER, _
                                         bPicData() As Byte) As Boolean
CopyMemory barray(0), ByVal VarPtr(BIH), Len(BIH)
CopyMemory barray(Len(BIH)), bPicData(0), BIH.biSizeImage

End Function

Geändert von CatboyJones (15.11.2017 um 11:35 Uhr).
CatboyJones ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.11.2017, 09:09   #14
markusxy
MOF Koryphäe
MOF Koryphäe
Standard

@Jones,
danke für die Hilfe.
Da sie der TS ja nicht meldet, missbrauche ich den Thread etwas für mich.
Wozu brauche ich das?
Ich möchte einige Möglichkeiten in Access kompensieren und "Objekte" durch direktes Zeichen im MemoryDC erstellen.
Da sind Themen wie TreeView, Zeitstrahl, Kalender, Datagrid usw.
Die Vorteile liegen auf der Hand. Die Geschwindigkeit ist atemberaubend, kein Flackern, keine Grenzen bei der Gestaltung. Unabhängig von 32/64Bit. Für die Eventsteuerung kann ich die bestehenden Mouse Events verwenden.

Das Laden der BMP brauche ich für Symbole, aus gespeicherten Bildern.
Vom Konzept her erstelle ich mir ein DC für Vorlagen.
Darin lade ich alle BMP die notwendig sind, und erstelle Muster für ganze Zeilen usw.

Für das erstellen des "Bildes" verwende ich dann einen "tempDC".
Je nach Bedarf wird das neue "Bild" vollständig erstellt oder das Bestehende wird in diesen tempDC teilweise übernommen und ergänzt mit den Mustern aus dem VorlagenDC.

Ich habe jetzt bemerkt, dass das BMP tatsächlich beschädigt wurde.
Derzeit habe ich einen sehr kurzen Weg gefunden, mit den BMP umzugehen.

hBmp = LoadImage()/LoadBitmap()
hCDC = CreateCompatibleDC(hDC)
mBmpT = SelectObject(hCDC,hBmp)
BitBlt(VorlagenCDC,,,,,hCDC ,,)

Somit sind die Daten im VorlagenDC.
Ich werde deinen Vorschlag mit dem hDCMeta noch einbinden, um andere Formate ebenfalls verwenden zu können. Sobald ich soweit bin, werde ich mich wieder melden.

Vorschläge, Anregungen und Bedenken sind natürlich wie immer willkommen.

LG Markus

Geändert von markusxy (16.11.2017 um 09:12 Uhr).
markusxy ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.11.2017, 15:45   #15
CatboyJones
MOF User
MOF User
Standard

@Markus
Das MetaFile-Format hat mir für Zeichenoperationen in Access am besten gefallen.
Hatte damit vor 10 Jahren ein bisschen gespielt, habe aber dann nichts umgesetzt.

Diese Demo habe ich noch extrahiert, in welchem ich ein Diagramm zeichne.

PaintMetaFileToImageControl.zip

Vlt. interessiert es Dich.

vg
Jones
CatboyJones ist gerade online  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 2 (Registrierte Benutzer: 1, Besucher: 1)
CatboyJones
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:10 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.