Nur Frame drucken

kurland

Mitglied
Hallo

Über das Drucken mit VB wurde hier schon ausführlich disskutiert. Ich habe jedoch kein Antowort auf mein Problem gefunden.

Auf meinen ActiveX-Steuerelement zeige ich dynamisch in einem Frame verschiedene Texte mittels Label an. Es soll nun ein Button zur Verfügung stehen, der nur gerade dieses Frame ausdruckt.

Gruss Roli
 
Hi,

wenn's so ne Art Hardcopy sein soll hätte ich folgende Lösung:

Code:
Private Declare Function StretchBlt Lib "gdi32" ( _
    ByVal hdc As Long, _
    ByVal x As Long, _
    ByVal y As Long, _
    ByVal nWidth As Long, _
    ByVal nHeight As Long, _
    ByVal hSrcDC As Long, _
    ByVal xSrc As Long, _
    ByVal ySrc As Long, _
    ByVal nSrcWidth As Long, _
    ByVal nSrcHeight As Long, _
    ByVal dwRop As Long) As Long

Private Sub PrintFrame(ByVal cFrame As Frame)
    Printer.Print
    Call StretchBlt(Printer.hdc, 0, 0, cFrame.Width * 4, cFrame.Height * 4, _
                    Me.hdc, cFrame.Left, cFrame.Top, cFrame.Width, cFrame.Height,  _
                    vbSrcCopy)
    Printer.EndDoc
End Sub

Die ScaleMode-Eigenschaft der Form sollte dabei auf vbPixels stehen. Die Multiplikation (* 4) kannst Du variieren, wenn das Bild zu klein sein sollte.

Gruß
Das Orakel
 
Hallo

Besten Dank, das Drucken . Nun habe ich zusätzlich versucht, den Ausdruck auf dem Blatt zu positionieren und zwar so:

Code:
Printer.Print
Printer.CurrentX = 150 
Printer.CurrentY= 50

Doch dann wird ein leeres Blatt ausgedruckt. Wie kann ich den Ausdruck auf dem Blatt positionieren

Gruss Kurland
 
Hmmmm,

erst mal hab ich keinen Plan warum das so sein könnte. Aber versuch doch mal die 150 auf sagen wir mal 15 runter zu setzten, und schau mal, was er dann macht

Aber wie ich weiter gesehen habe, suchst Du ja sowieso eine andere Lösung für Dein Druckproblem

Gruß
Das Orakel
 
Hallo

Habe das Problem gefunden. die Ausrichtung auf dem Blatt:

Code:
    Printer.Print
    Call StretchBlt(Printer.hdc, 150, 50, cFrame.Width * 4, cFrame.Height * 4, _
                    Me.hdc, cFrame.Left, cFrame.Top, cFrame.Width, cFrame.Height,  _
                    vbSrcCopy)
    Printer.EndDoc
End Sub

Nach dem Printer.hdc die Nullen mit den gewünschten Werten ersetzten.
Gruss Kurland
 
so, ne blöde Frage aber ich brings einfach net hin :confused:

Den Code für das Frame drucken versteh ich zwar nicht - bin ein ziemlicher VB-Neuling, wir haben erst heuer 6 Stunden in der Schule programmiert damit -, aber ich denke er müsste trotzdem funktionieren. :)

Nun zu meiner Frage:

Wie muss ich einen Button verlinken, damit ich beim Klick auf den Button das Frame gedruckt bekomme bzw. ich werd ja irgendwo den Namen des Frames angeben müssen, wo muss der hin?

Ich bräuchte bitte dringend Hilfe, da ich ein Programm bis Montag schreiben muss, und es würde an dem scheitern, wenn der Ausdruck nicht geht :mad:

Danke schon mal im Voraus
 
Hi Firewolfx

naja, wenn Du nicht verstehst, was da passiert, dann kannst Du doch gar nicht beurteilen, obs die Lösung zu Deinem Problem ist. Wie dem auch sei.

Falls Du wirklich einen Frame ausdrucken möchtest, dann wird die Prozedur mittels

Call PrintFrame(NameDeinesFrameControls)

aufgerufen

Gruß
Das Orakel
 
Zurück