[VB6/VBA] The CommonDialog control

Published by netty5 - Last update on August 1, 2009 12:36 PM by jak58

[VB6/VBA] The CommonDialog control






The various functions of control CommonDialog

Here is a list of all the available constants,although they are not used in all functions, they will enable further researches.

The available functions with CommonDialog

  • The dialog box> Open File
  • The dialog box> Save as
  • The dialog box> Print
  • The dialog box> Selecting a policy

Getting started


A form> Name=Dialog
CommonDialog control> Name=CMDialog1

Button1>Caption =Open File
Code in CommandX_Click()>Ret =cmd_Open

Button2>Caption=Save as
Code in Clic Ret = cmd_Open()

Button3> Caption =Print
Code in CommandX_Click()>Ret = cmd_Print()

Button4> Caption = Policy
Code in CommandX_Click()> Ret = cmd_Policy()

An example of a standard module


Option Explicit

Public Filter1 As String
Public Filter2 As String
Public Filter 3 As String
Public Filter 4 As String
Public Filter 5 As String
Public Filter As String
Public Filter 7 As String

Public Const DLG_FILE_OPEN = 1
Public Const DLG_FILE_SAVE = 2
Public Const DLG_COLOR = 3
Public Const DLG_FONT = 4
Public Const DLG_Print = 5
Public Const DLG_HELP = 6

'File Open/Save Dialog Flags
Public Const OFN_READONLY = &H1&
Public Const OFN_OVERWRITEPROMPT = &H2&
Public Const OFN_HIDEREADONLY = &H4&
Public Const OFN_NOCHANGEDIR = &H8&
Public Const OFN_SHOWHELP = &H10&
Public Const OFN_NOVALIDATE = &H100&
Public Const OFN_ALLOWMULTISELECT = &H200&
Public Const OFN_EXTENSIONDIFFERENT = &H400&
Public Const OFN_PATHMUSTEXIST = &H800&
Public Const OFN_FILEMUSTEXIST = &H1000&
Public Const OFN_CREATEPROMPT = &H2000&
Public Const OFN_SHAREAWARE = &H4000&
Public Const OFN_NOREADONLYRETURN = &H8000&

'Color Dialog Flags
Public Const CC_RGBINIT = &H1&
Public Const CC_FULLOPEN = &H2&
Public Const CC_PREVENTFULLOPEN = &H4&
Public Const CC_SHOWHELP = &H8&

'Fonts Dialog Flags
Public Const CF_SCREENFONTS = &H1&
Public Const CF_PRINTERFONTS = &H2&
Public Const CF_BOTH = &H3&
Public Const CF_SHOWHELP = &H4&
Public Const CF_INITTOLOGFONTSTRUCT = &H40&
Public Const CF_USESTYLE = &H80&
Public Const CF_EFFECTS = &H100&
Public Const CF_APPLY = &H200&
Public Const CF_ANSIONLY = &H400&
Public Const CF_NOVECTORFONTS = &H800&
Public Const CF_NOSIMULATIONS = &H1000&
Public Const CF_LIMITSIZE = &H2000&
Public Const CF_FIXEDPITCHONLY = &H4000&
Public Const CF_WYSIWYG = &H8000&         'must also have CF_SCREENFONTS & CF_PRINTERFONTS
Public Const CF_FORCEFONTEXIST = &H10000
Public Const CF_SCALABLEONLY = &H20000
Public Const CF_TTONLY = &H40000
Public Const CF_NOFACESEL = &H80000
Public Const CF_NOSTYLESEL = &H100000
Public Const CF_NOSIZESEL = &H200000

'Printer Dialog Flags
Public Const PD_ALLPAGES = &H0&
Public Const PD_SELECTION = &H1&
Public Const PD_PAGENUMS = &H2&
Public Const PD_NOSELECTION = &H4&
Public Const PD_NOPAGENUMS = &H8&
Public Const PD_COLLATE = &H10&
Public Const PD_PRINTTOFILE = &H20&
Public Const PD_PRINTSETUP = &H40&
Public Const PD_NOWARNING = &H80&
Public Const PD_RETURNDC = &H100&
Public Const PD_RETURNIC = &H200&
Public Const PD_RETURNDEFAULT = &H400&
Public Const PD_SHOWHELP = &H800&
Public Const PD_USEDEVMODECOPIES = &H40000
Public Const PD_DISABLEPRINTTOFILE = &H80000
Public Const PD_HIDEPRINTTOFILE = &H100000

'Help Constants
Public Const HELP_CONTEXT = &H1           'Display topic in ulTopic
Public Const HELP_QUIT = &H2              'Terminate help
Public Const HELP_INDEX = &H3             'Display index
Public Const HELP_CONTENTS = &H3
Public Const HELP_HELPONHELP = &H4        'Display help on using help
Public Const HELP_SETINDEX = &H5          'Set the current Index for multi index help
Public Const HELP_SETCONTENTS = &H5
Public Const HELP_CONTEXTPOPUP = &H8
Public Const HELP_FORCEFILE = &H9
Public Const HELP_KEY = &H101             'Display topic for keyword in offabData
Public Const HELP_COMMAND = &H102
Public Const HELP_PARTIALKEY = &H105      'call the search engine in winhelp

Function add(a$) As String
    If a$ <> "" Then a$ = a$ + "|"
    add = a$
End Function

'Command lines ...
'FileName = cmd_open()
'If 1 filter more >> FileName = cmd_open("txt") 
'If multiple filters, initialize filter1 to 4 
'routine adds all the filter
Function cmd_open(Optional Filt1 As String) As String
Dim CTRL$, a$, b$, F1$, F2$, F3$, F4$
CTRL$ = Chr$(13) + Chr$(10)
    If Filt1 <> "" Then
        a$ = " File (*." & Filt1 & ") | *." & Filt1
    End If
    If Filter1 <> "" Then
        a$ = add(a$)
        a$ = a$ + " File (*." & Filter1 & ") | *." & Filter1
        Filter1 = ""
    End If
    If Filter2 <> "" Then
        a$ = add(a$)
        a$ = a$ + " File (*." & Filter2 & ") | *." & Filter2
        Filter2 = ""
    End If
    If Filter3 <> "" Then
        a$ = add(a$)
        a$ = a$ + " File (*." & Filter3 & ") | *." & Filter3
        Filter 3 = ""
    End If
    If Filter4 <> "" Then
        a$ = add(a$)
        a$ = a$ + " File (*." & Filter4 & ") | *." & Filter4
        Filter4 = ""
    End If
        a$ = add(a$)
        a$ = a$ + " All (*.*) | *.*"
    Dialog.CMDialog1.Filter = a$
    Dialog.CMDialog1.FilterIndex = 1
    Dialog.CMDialog1.FLAGS = CF_EFFECTS Or OFN_HIDEREADONLY Or CF_ANSIONLY
    Dialog.CMDialog1.Action = DLG_FILE_OPEN
    cmd_open = Dialog.CMDialog1.FileName
    Unload Dialog
End Function

Function cmd_Policy()
    Dialog.CMDialog1.DialogTitle = "Select policy"
    Dialog.CMDialog1.FLAGS = CF_WYSIWYG + CF_BOTH + CF_SCALABLEONLY
    Dialog.CMDialog1.Action = DLG_FONT
    Filter1 = Dialog.CMDialog1.FontName
    Filter4 = Dialog.CMDialog1.FontSize
    Filter5 = Dialog.CMDialog1.FontBold
    Filter6 = Dialog.CMDialog1.FontItalic
    cmd_Policy = Dialog.CMDialog1.FontName
End Function

Function cmd_Print()
    Dialog.CMDialog1.FLAGS = PD_ALLPAGES
    Dialog.CMDialog1.Min = 1
    Dialog.CMDialog1.Max = 100
    Dialog.CMDialog1.FromPage = 1
    Dialog.CMDialog1.ToPage = 100
    Dialog.CMDialog1.Action = DLG_Print
    Unload Dialog
End Function

'Filt1 = file extension to be searched for
'eg: TXT ou EXE
'routine adds all the filter(*.*)
Function cmd_SaveAs(Filt1 As String) As String
    Filter1 = "File (*." & Filt1 & ") | *." & Filt1
    Filter2 = "All (*.*) | *.*"
    Dialog.CMDialog1.Filter = Filter1 + "|" + Filter2
    Dialog.CMDialog1.FilterIndex = 1
    Dialog.CMDialog1.FLAGS = OFN_HIDEREADONLY
    Dialog.CMDialog1.Action = DLG_FILE_SAVE
    cmd_SaveAs = Dialog.CMDialog1.FileName
    Unload Dialog

End Function