title image


Smiley Re: Seitenansicht oder Drucken? Wie feststellen?
Der folgende Code ist leider noch keine vollständige Lösung:Option Compare DatabaseOption ExplicitPrivate mActivated As Boolean Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _( _ ByVal hWnd As Long, _ ByVal lpString As String, _ ByVal cch As Long _) As Long Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" _( _ ByVal hWnd As Long _) As Long Private Sub Detailbereich_Print(Cancel As Integer, PrintCount As Integer) Dim sBuffer As String Dim lBuffLen As Long Dim RetVal As Long  Me.Print "mActivated liefert: "; mActivated Me.CurrentX = Me.ScaleLeft  Me.Print "Me.Visible liefert: "; Me.Visible Me.CurrentX = Me.ScaleLeft  Me.Print "Me.Caption liefert: "; Me.Caption Me.CurrentX = Me.ScaleLeft ' ' Textlänge ermitteln und Buffer in der passenden Größe bereitstellen: ' lBuffLen = GetWindowTextLength(Me.hWnd) sBuffer = String$(lBuffLen, " ") & vbNullChar ' ' Fenstertext holen: ' RetVal = GetWindowText(Me.hWnd, sBuffer, Len(sBuffer)) If RetVal 0 Then ' Fenstertext wurde zurückgegeben. sBuffer = Left(sBuffer, RetVal) Me.Print "GetWindowText liefert: "; sBuffer Else Me.Print "GetWindowText liefert: -Kein Fenstertitel gefunden-" End If End Sub Private Sub Report_Activate() mActivated = TrueEnd Sub Private Sub Report_Deactivate() mActivated = FalseEnd SubDie API-Funktion GetWindowText gibt den Text in der Titelzeile eines Fensters zurück. Wir Access'ler kennen diesen Text als Beschriftung-Eigenschaft (Caption). Wichtig ist hierbei, daß Du die Eigenschaft Caption (Beschriftung) Deines Berichtes änderst. Die Rückgabewerte von Me.Caption und GetWindowText sind gleich, wenn der Bericht in der Vorschauansicht geöffnet wird und sie unterscheiden sich, wenn der Bereicht direkt aus dem Datenbankfenster heraus gedruckt wird. Dummerweise unterscheiden sie sich NICHT, wenn der Bericht aus dem Vorschaufenster heraus gedruckt wird.Die Idee hierzu wäre nun, den Standardbefehl "Drucken" (=DoCmd.PrintOut) durch "ÖffnenBericht" (DoCmd.OpenReport View:= acNormal) zu ersetzen.Zusätzlich teste ich die Eigenschaften Visible des Berichtes und ob der Bericht gerade aktiviert wurde. Leider ergibt sich auch mit diesen Eigenschaften kein eindeutiges Verhalten: (Annahme: Der Bericht heißt Bericht1 und hat die Beschriftung "MeineBeschriftung" VersionMe.ActivatedMe.VisibleMe.CaptionGetWindowTextBerichtsvorschau geöffnet aus DatenbankfensterTrueFalseMeineBeschriftungMeineBeschriftungBerichtsvorschau geöffnet aus EntwurfsansichtTrueTrueMeineBeschriftungMeineBeschriftungDirektdruck aus DatenbankfensterFalseFalseMeineBeschriftungBericht1: BerichtDruck aus BerichtsvorschauTrueTrueMeineBeschriftungMeineBeschriftungDruck aus Berichtsvorschau, die aus derEntwurfsansicht geöffnet wurdeTrueTrueMeineBeschriftungMeineBeschriftungDruck aus EntwurfsansichtFalseTrueMeineBeschriftungBericht1: BerichtMan könnte also sagen:Wenn GetWindowText einen String zurückliefert, der nicht gleich dem String ist, der in der Caption-Eigenschaft abgelegt wurde, dann wird gedruckt.Wenn GetWindowText einen String zurückliefert, der gleich dem String ist, der in der Caption-Eigenschaft abgelegt wurde und wenn die Eigenschaft Me.Visible = True ist, dann wird ebenfalls gedruckt.Der einzige Punkt, wo des dann noch klemmen könnte, wäre der zweite Eintrag: "Druck direkt aus Entwurfsansicht".Aber da hätten wir die Ausrede, daß das nur den Entwickler betrift und nicht den Endanwender.Viel Erfolg!Thomas Prötzschcu
Thomas Prötzsch

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: