Form Oberfläche drucken

Hallo zusammen,

1. Ich möchte gerne mein komplettes Programm bzw die Form Oberfläche auf ein A4 Blatt ausdrucken. Mit dem Befehl form1.printform klappt das auch, jedoch druckt er es in die ersten 3/4. der letzte 1/4 ist nichts...
Ich würde gerne oben hin zum Blatt mehr Luft lassen.

2. Kann man das komplette formular speichern uns je nach bedarf wieder aufrufen und wenn es nötig ist auch Änderungen vornehmen?

und wiedermal vielen dank für die Hilfe.
 
Soweit ich weiss hat man bei PrintForm nicht so viele Möglichkeiten (also eigentlich keine) Du könntest höchstens versuchen die Seiteneinstellungen deines Druckers zu beeinflussen

Grüsse bb
 
hallo brainbyte,

schade das man da nichts machen kann. Wie schaut es denn aus wenn man alle Eingaben und Ausgaben von der Application auf ein Word doc übernimmt. Kann man da dann auch Schiftarten etc ändern?
Hättest du vllt ein Bsp code zur Hand, sodass ich mir das mal ansehen könnte?
 
Hallo

Das ist vielleicht etwas für Dich:
Visual Basic:
Private Declare Sub keybd_event Lib "user32" ( _
  ByVal bVk As Byte, _
  ByVal bScan As Byte, _
  ByVal dwFlags As Long, _
  ByVal dwExtraInfo As Long)
  
Private Enum Ausrichtung
 Hochformat = 1
 Querformat = 2
End Enum

Private Sub Command1_Click()
  FormToPrinter True, Querformat
End Sub

Private Sub FormToPrinter(Optional ByVal bActiveWindow As Boolean = True, Optional Orientation As Ausrichtung = Hochformat)

  Const KEYEVENTF_KEYUP = &H2
  Const VK_MENU = &H12
  Const VK_SNAPSHOT = &H2C

  If bActiveWindow Then keybd_event VK_MENU, 0, 0, 0
  keybd_event VK_SNAPSHOT, 0, 0, 0
  keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
  If bActiveWindow Then keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
  DoEvents
  
  Printer.Orientation = Orientation
  
  ' Hier kannst Du die Seitenränder einstellen
  Printer.PaintPicture Clipboard.GetData, 0, 0, Printer.ScaleWidth, Printer.ScaleHeight
  
  Printer.EndDoc
End Sub
 
vielen Dank @Wincnc. Werde das mal in meiner applikation versuchen. Weisst du denn auch ob man diese applikation speichern kann und gegebenfals wieder aufrufen, um eine Änderung vorzunehmen?
 
ok, was wuerdest du vorschlagen? Es waere toll wenn man diese wieder aufrufen koennte und gegebenfals aendern. Kann man das in der Urspruenglichen Form dan auch wieder oeffnen, via einer INI-Datei?
 
Hier ein Beispiel für die Speicherung in der ini.
Visual Basic:
Private Declare Function WritePrivateProfileString Lib _
  "kernel32" Alias "WritePrivateProfileStringA" _
  (ByVal lpApplicationName As String, _
  ByVal lpKeyName As Any, ByVal lpString As Any, _
  ByVal lpFileName As String) As Long

Private Declare Function GetPrivateProfileString Lib _
  "kernel32" Alias "GetPrivateProfileStringA" _
  (ByVal lpApplicationName As String, _
  ByVal lpKeyName As Any, ByVal lpDefault As String, _
  ByVal lpReturnedString As String, ByVal nSize As Long, _
  ByVal lpFileName As String) As Long

Private Sub Form_Load()
'INI Datei beim Starten der Anwendung lesen.

Dim sValue As String * 255
Dim lResult As Long

  lResult = GetPrivateProfileString("TextBox", "1", "", sValue, Len(sValue), App.Path & "\Test.ini")
  Text1.Text = Left$(sValue, lResult)

  lResult = GetPrivateProfileString("TextBox", "2", "", sValue, Len(sValue), App.Path & "\Test.ini")
  Text2.Text = Left$(sValue, lResult)
End Sub

Private Sub Form_Unload(Cancel As Integer)
'INI Datei beim Beenden der Anwendung schreiben.

  WritePrivateProfileString "TextBox", "1", Text1.Text, App.Path & "\Test.ini"
  WritePrivateProfileString "TextBox", "2", Text2.Text, App.Path & "\Test.ini"
End Sub
Das funktioniert aber nur mit TextBoxen ohne Multiline, bzw. mit einfachen Strings bis zu einer Länge von 255 Zeichen.
 
das problemist, dass ich textboxen habe mit multilines... Geht es denn wenn man es in ein daten sheet speichert?

ich habe auch mal versucht die Form in ein Word document zu kopieren, habe praktisch deinen code fuers drucken uebernommen und ein wenig veraendert. Das Word document oeffnet sich, jedoch weiss ich nicht den code das der die form dort rein kopiert.

hier mal was ich versucht habe:

Private Sub command5_click()
FormTodocument True, querformat
Dim X As Object
Set X = CreateObject("word.application")
X.Visible = True
X.documents.Add
End Sub

Kann ich dann auch direkt scalieren, sowie du es fuer den Druck befehl gemacht hast?

vielen dank fuer deine Hilfe...
 
Zurück