Res /

Qpagesetup Inc

Documentation

Resources

The Wiki

edit SideBar

Qpagesetup Inc
'File source from Holyguard.net
'=======================================================
' Type Objet
' Classe QPageSetup version 1.1
'=======================================================
$IFNDEF TRUE
  $DEFINE True 1
$ENDIF

$IFNDEF FALSE
  $DEFINE False 0
$ENDIF

$IFNDEF boolean
  $DEFINE boolean integer
$ENDIF

CONST PSD_DEFAULTMINMARGINS=0
CONST PSD_MINMARGINS=&H1
CONST PSD_MARGINS=&H2
CONST PSD_INTHOUSANDTHSOFINCHES=&H4
CONST PSD_INHUNDREDTHSOFMILLIMETERS=&H8
CONST PSD_DISABLEMARGINS=&H10
CONST PSD_DISABLEPRINTER=&H20
CONST PSD_NOWARNING=&H80
CONST PSD_DISABLEORIENTATION=&H100
CONST PSD_DISABLEPAPER=&H200
CONST PSD_RETURNDEFAULT=&H400
CONST PSD_SHOWHELP=&H800
CONST PSD_ENABLEPAGESETUPHOOK=&H2000
CONST PSD_ENABLEPAGESETUPTEMPLATE=&H8000
CONST PSD_ENABLEPAGESETUPTEMPLATEHANDLE=&H20000
CONST PSD_ENABLEPAGEPAINTHOOK=&H40000
CONST PSD_DISABLEPAGEPAINTING=&H80000
CONST PSD_NONETWORKBUTTON=&H200000

TYPE TPSD
  lStructSize AS LONG
  hWndOwner AS LONG
  hDevMode AS LONG
  hDevNames AS LONG
  Flags AS LONG
  ptPaperSizeX AS LONG
  ptPaperSizeY AS LONG
  rtMinMarginLeft AS LONG
  rtMinMarginTop AS LONG
  rtMinMarginRight AS LONG
  rtMinMarginBottom AS LONG
  rtMarginLeft AS LONG
  rtMarginTop AS LONG
  rtMarginRight AS LONG
  rtMarginBottom AS LONG
  hInstance AS LONG
  lParam AS LONG
  lpfnPageSetupHook AS LONG
  lpfnPagePaintHook AS LONG
  lpPageSetupTemplate AS LONG
  hPageSetupTemplate AS LONG
END TYPE

CONST WM_INITDIALOG_PSD=&H110


DECLARE FUNCTION PageSetupDlg LIB "COMDLG32" ALIAS "PageSetupDlgA" (Ptr AS TPSD) AS LONG

DECLARE FUNCTION GetPageText LIB "user32" ALIAS "GetWindowRect" (hwnd AS LONG, lpRect AS QRECT) AS LONG
DECLARE FUNCTION MovePage LIB "user32" ALIAS "MoveWindow" (hwnd AS LONG,x AS LONG,y AS LONG,nWidth AS LONG,nHeight AS LONG,bRepaint AS LONG) AS LONG
DECLARE FUNCTION SetPageText LIB "user32" ALIAS "SetWindowTextA" (hWnd AS LONG,ByRef lpString AS STRING) AS LONG


Type QPageSetup EXTENDS QOBJECT
  Private:
    PSD AS TPSD
  Public:
    Caption as string
    DisablePrinter as boolean
    DisablePaper as boolean
    DisableOrient as boolean
    DisableMargins as boolean
    Orientation as boolean PROPERTY SET SetOrientation
    MarginLeft as long PROPERTY SET SetMarginLeft
    MarginTop as long PROPERTY SET SetMarginTop
    MarginRight as long PROPERTY SET SetMarginRight
    MarginBottom as long PROPERTY SET SetMarginBottom
    PageWidth as long PROPERTY SET SetPageWidth
    PageHeight as long PROPERTY SET SetPageHeight


  Private:

  '=============================================
  ' Procédure boite de dialogue
  '=============================================
  Function HookProc(hWnd AS LONG, uMsg AS LONG, wParam AS LONG, lParam AS LONG) AS LONG
    dim R as QRECT

    if uMsg=WM_INITDIALOG_PSD then
      GetPageText(hWnd,R)
      MovePage(hWnd,((Screen.Width-(R.Right-R.Left))/2),((Screen.Height-(R.Bottom-R.Top))/2),(R.Right-R.Left),(R.Bottom-R.Top),0)
      if LEN(QPageSetup.Caption) then
        SetPageText(hWnd,QPageSetup.Caption)
      end if
      Result=true
    else
      Result=false
    end if
  End Function

  Public:

  '=============================================
  ' Proprieté orientation page en lecture seule
  '=============================================
  PROPERTY SET SetOrientation(value as boolean)
  END PROPERTY

  '===============================================
  ' Proprieté valeur marge gauche
  '===============================================
  PROPERTY SET SetMarginLeft(value as long)
    QPageSetup.PSD.rtMarginLeft=value*100
  END PROPERTY

  '===============================================
  ' Proprieté valeur marge haute
  '===============================================
  PROPERTY SET SetMarginTop(value as long)
    QPageSetup.PSD.rtMarginTop=value*100
  END PROPERTY

  '===============================================
  ' Proprieté valeur marge droite
  '===============================================
  PROPERTY SET SetMarginRight(value as long)
    QPageSetup.PSD.rtMarginRight=value*100
  END PROPERTY

  '===============================================
  ' Proprieté valeur marge basse
  '===============================================
  PROPERTY SET SetMarginBottom(value as long)
    QPageSetup.PSD.rtMarginBottom=value*100
  END PROPERTY

  '===============================================
  ' Proprieté largeur page en lecture seule
  '===============================================
  PROPERTY SET SetPageWidth(value as boolean)
  END PROPERTY

  '===============================================
  ' Proprieté hauteur page en lecture seule
  '===============================================
  PROPERTY SET SetPageHeight(value as boolean)
  END PROPERTY

  '===========================================
  ' Méthode affichage mise en page imprimante
  '===========================================
  Function Execute as boolean
    QPageSetup.PSD.lStructSize = SIZEOF(QPageSetup.PSD)
    QPageSetup.PSD.hWndOwner=Application.handle
    QPageSetup.PSD.Flags=PSD_MARGINS+PSD_MINMARGINS
    if QPageSetup.Caption<>"" then
      QPageSetup.PSD.Flags=QPageSetup.PSD.Flags+PSD_ENABLEPAGESETUPHOOK
      QPageSetup.PSD.lpfnPageSetupHook=CODEPTR(QPageSetup.HookProc)
    end if
    if QPageSetup.DisablePrinter then
      QPageSetup.PSD.Flags=QPageSetup.PSD.Flags+PSD_DISABLEPRINTER
    end if
    if QPageSetup.DisablePaper then
      QPageSetup.PSD.Flags=QPageSetup.PSD.Flags+PSD_DISABLEPAPER
    end if
    if QPageSetup.DisableOrient then
      QPageSetup.PSD.Flags=QPageSetup.PSD.Flags+PSD_DISABLEORIENTATION
    end if
    if QPageSetup.DisableMargins then
      QPageSetup.PSD.Flags=QPageSetup.PSD.Flags+PSD_DISABLEMARGINS
    end if
    if PageSetupDlg(QPageSetup.PSD) then
      QPageSetup.Execute=true
      QPageSetup.PageWidth=QPageSetup.PSD.ptPaperSizeX/100
      QPageSetup.PageHeight=QPageSetup.PSD.ptPaperSizeY/100
      if QPageSetup.PageWidth>QPageSetup.PageHeight then
        QPageSetup.Orientation=true
      else
        QPageSetup.Orientation=false
      end if
      QPageSetup.MarginLeft=QPageSetup.PSD.rtMarginLeft/100
      QPageSetup.MarginTop=QPageSetup.PSD.rtMarginTop/100
      QPageSetup.MarginRight=QPageSetup.PSD.rtMarginRight/100
      QPageSetup.MarginBottom=QPageSetup.PSD.rtMarginBottom/100
    else
      QPageSetup.Execute=false
    end if
  End Function

  Constructor
    Caption=""
    DisablePrinter=false
    DisablePaper=false
    DisableOrient=false
    DisableMargins=false
  End Constructor
End Type

Recent Changes (All) | Edit SideBar Page last modified on August 17, 2007, at 03:38 PM Edit Page | Page History
Powered by PmWiki