|
テクニカルノート08: Common Dialog ObjectsMarch 12, 2003© NSB Corporation. All rights reserved. |
マイクロソフト社のドキュメントも参考にして下さい。
Common Dialog Objects はMicrosoftによって提供されているオブジェクトの集まりで、NS Basic/CE プログラムでご使用になれます。 これらのオブジェクトは、"ActiveX Control Objects 1.0"の一部として含まれており、MicrosoftのWebサイトからダウンロードが可能です。お使いのシステムにこのモジュールを読ませる方法につきましては、テクニカルノート01を参照して下さい。
ActiveX Control Objects に関するインフォメーションはテクニカルノート01を参照して下さい。
Common Dialog Objectsは、
これらの全ては以下のコールによって初期化されます。
addObject "dialog"
以下のコマンドにより color picker が開かれます。
dialog.ShowColor
Palm-size PC用にはメソッドはサポートされていません。
以下のプロパティはコールする前に設定出来ます。
dialog.Color [= initial color] 'sets/returns the color
dialog.CancelError = True 'trigger error on cancel?
dialog.Flags [= value] 'sets flags defining appearance
Flags
用の値を以下に示します。
定数 |
値 |
内容 |
|
|
Define Custom Colorsセクションを含めたダイアログボックスの全部を表示します。 |
|
|
ダイアログボックスに Help ボタンを表示させるようにする。 |
|
|
Define Custom Colorsコマンドボタンを無効にし、ユーザによるカスタムカラーの定義を許容させないようにします。 |
|
|
ダイアログボックス用に最初の色の値を設定します。 |
Or オペレータを使用し、ダイアログボックス用のフラグを複数設定することで、組合せの値を定義出来ます。例えば、
dialog.Flags = &H10& Or &H200&
以下のコマンドにより font picker が開かれます。
Dialog.ShowFont
以下のプロパティは呼ぶ前に設定出来ます。
Dialog.Max [=int] 'the maximum font size
Dialog.Min [=int] 'the minimun font size
Dialog.CancelError = True 'trgger error on cancel?
Dialog.Flags [=value]
Flags
の値を以下に示します。
定数 |
値 |
内容 |
|
|
ダイアログボックスがWindows文字セットを使用するフォントの選択のみを許容するように指定。このフラグがセットされた場合、ユーザはシンボルだけを含んでいるフォントの選択が出来ない。 |
|
|
ダイアログボックス上のApplyボタンを有効にする。 |
|
|
利用可能なプリンターとスクリーンフォントの一覧を、ダイアログボックスに表示させるようにする。hDCプロパティは、プリンタに関連したデバイスコンテキストを識別します。 |
|
|
ダイアログボックスに、抹消ライン、アンダーライン、及び色効果を可能にするよう指定する。 |
|
|
ダイアログボックスが固定幅のフォントしか選べないように指定する。 |
|
|
ユーザが存在しないフォントやスタイルを指定した場合に、エラー メッセージ ボックスを表示するように指定する。 |
|
|
ダイアログボックスにHelpボタンを表示させるようにする。 |
|
|
ダイアログボックスに、Min及びMaxプロパティで指定された範囲の中だけで、フォントサイズを選べるように指定する。 |
以下のプロパティは ShowFont によって設定されます。
Dialog.Color
Dialog.FontBold
Dialog.FontItalic
Dialog.FontName
Dialog.FontSize
Dialog.FontStrikethru
Dialog.FontUnderline
以下のコマンドを使用してSave As Dialog を開ける。
Dialog.ShowSave
注意
Dialog.Showsaveにおける2つのバグ :
Dialog.filenameで余分な先導文字'\'を返しますので、これを以下のコードによって取除かなければなりません。
fn=right(dialog.filename,len(dialog.filename)-1)
また、ダイアログが dialog.defaultext="cdb" にセットされたとしても、もし'File Name'にファイルへの拡張子を特に加えない場合は、'Options'ボタンをクリックし、Type ( dialog.filter="Data (*.cdb)|*.cdb" によって設定) から選ばなければなりません。でなければ、dialog.filename への拡張子は追加されません!
dialog.defaultext="cdb" の設定と dialog.showopen の使用は、自動的に拡張子を追加します。さらに dialog.showopen は、余分な先導文字'\'無しで正しいパス(path)を返します。 -- Greg Kelly
プロパティ
以下のプロパティは呼ぶ前に設定出来ます。
Dialog.DialogTitle = "Save As File"
Dialog.InitDir = "\"
Dialog.Flags = 0
Dialog.Filter = "Text|*.txt"
Dialog.DefaultExt = "txt"
Dialog.filename = "" 'initialize
Dialog.Flags [=value]
Flags
用の値を以下に示します。Select File ダイアログには同じフラグが使用されていますので、注意して下さい。また、現在のリリースでは全てのフラグは対応していません。
定数 |
値 |
内容 |
|
|
File Nameリストボックスが多重選択を許容できるよう指定する。ユーザは実行時にSHIFTキーを押しながらUP ARROW(上矢印)とDOWN ARROW(下矢印)キーを使うことにより、複数のファイルを指定出来る。これが成されると、FileName プロパティは全ての選択されたファイル名を含んだ文字列を返す。文字列内のファイル名同士はスペース(空白文字)で区切られる。 |
|
|
ユーザに現在存在しないファイル名を作成するように促すダイアログボックスを指定する。このフラグは自動的に |
|
|
戻されたfilenameの拡張子は |
|
|
ユーザがFile Nameテキストボックス内にあるファイル名のみ入力出来るように指定する。このフラグがセットされていて、ユーザが無効なファイル名を入力した場合、警告が表示される。このフラグは自動的に |
|
|
ダイアログボックスにHelpボタンを表示させる。 |
|
|
Read Onlyチェックボックスを隠す。 |
|
|
長いファイル名を使用。 |
|
|
ダイアログボックスが開かれた時に、前回のそのままのディレクトリを現ディレクトリに設定させる。 |
|
|
長いファイル名は無し。 |
|
|
戻されるファイルにRead Onlyの属性が設定されないことと、書き込み禁止ディレクトリ内に入らないことを指定する。 |
|
|
ダイアログボックスが、戻されるファイル名に無効な文字を許容することを指定する。 |
|
|
既に選択したファイルが存在する場合、Save As ダイアログボックスにメッセージボックスを作成させる。ユーザは、ファイルを上書きするかを決めなければならない。 |
|
|
ユーザが有効なパスのみ入力出来るように指定する。このフラグがセットされていて、ユーザが無効なパスを入力した場合、警告が表示される。 |
|
|
ダイアログボックスが作成される時、最初からRead Onlyチェックボックスがチェックされているようにする。またこのフラグは、ダイアログボックスが閉じている時のRead Onlyチェックボックスの状態を示す。 |
|
|
sharing violation errors(共有違反エラー)は無視されるように指定する。 |
選択されたフラグを定義することも出来ます。例えば、
Const ReadOnly = &H00000001&
Const Effects = &H00000100&
Dialog.Flags = &H10& Or &H200&
以下のプロパティは ShowOpen によって設定されます。
Dialog.FileName
以下のコマンドでSelect File ダイアログを開きます。
Dialog.ShowOpen
以下のプロパティは呼ぶ前に設定出来ます。
Dialog.DialogTitle = "Pick a text file to open"
Dialog.InitDir = "\"
Dialog.Filter = "Text|*.txt"
Dialog.FilterIndex = 1
Dialog.Flags = &H1000 Or &H800 'path and file must exist
Dialog.filename = "" 'initialize
Flags
設定のインフォメーションは "Open File" ダイアログを参照して下さい。
以下のプロパティは ShowOpen によって設定されます。
Dialog.FileName
以下のコマンドでHelpダイアログを開きます。
Dialog.ShowHelp
以下のプロパティは呼ぶ前に設定出来ます。
Dialog.HelpCommand [ = value]
Dialog.HelpContext [ = string]
Dialog.HelpFile [ = filename]
Values for HelpCommand
値を以下に示します。
定数 |
値 |
内容 |
|
|
Helpマクロを実行する。 |
|
|
.hpjファイルの [OPTION] セクションのContentsオプションによって定義されるHelp context topicを表示する。 |
|
|
特定のcontext用にHelpを表示する。この設定を使用する場合、HelpContextプロパティを使用して、 contextを指定しなければならない。 |
|
|
.hpjファイルの[Map]セクションで定義される context numberによって確認される、特定のHelpトピックをポップアップ ウインドウ内に表示する。 |
|
|
WinHelpが正しいHelpファイルを表示することを確実にする。正しいHelpファイルが表示されている場合、何も起こらない。間違ったHelpファイルが表示されている場合、WinHelp は正しいファイルを開く。 |
|
|
Helpアプリケーションそのものを使用する為の Help を表示する。 |
|
|
指定Helpファイルのインデックスを表示する。アプリケーションは、一つのインデックスのHelpファイル用にのみ、この値を使用するべきである。 |
|
|
特定のキーワード用に Help を表示する。この設定を使用する時は、HelpKey プロパティを使って一つのキーワードを指定しなければなりません。 |
|
|
dwData パラメータで渡されるキーワードに、キーワードリストのトピックが一つだけぴったり一致した場合、そのトピックを表示する。複数の一致が存在する場合、Go Toリストボックスに、見つかったトピックをリストした検索ダイアログボックスが表示される。何も一致しない場合、検索ダイアログボックスが表示される。キーワードを渡さずに検索ダイアログボックスを表示させるには、空文字列へのポインター(long)を使用する。 |
|
|
Helpアプリケーションに、指定のHelpファイルは使用されなくなったことを通知する。 |
|
|
ユーザが F1 キーを押した時、どのトピックを表示するかを決める。 |
|
|
HelpContext プロパティで指定されるcontextを、HelpFileプロパティで指定するHelpファイルの現在のインデックスとして設定する。このインデックスは、ユーザが他のHelpファイルにアクセスするまで、最新として残る。この値は、複数のインデックスを持つ Helpファイルの為のみに使用。 |
あなたのアプリケーション用にWindows Helpファイルを作成し、アプリケーションのHelpFileプロパティを設定した場合、ユーザが Help ボタンを押した時にHelpが呼ばれます。アクティブコントロールかアクティブフォーム用に、HelpContextID プロパティにcontext番号がある場合、Help は現在のHelp contextに一致するトピックを表示します。それ以外は、内容画面を表示します。ファイルはデフォルトとして、\windowsディレクトリに置かれます。
ユーザが、Object BrowserからActiveX コンポーネントの為にHelpをリクエストする時に、どの Helpファイルを表示するかを決める為に、HelpFileプロパティを使用出来ます。
単純なヘルプファイルは通常のhtmlファイルです。Microsoft は、さらに複雑なHelpファイルの作成はMicrodoft Windows Help Compilerが必要であると述べています。Visual Basic, Professional Editionと共に入手可能です。
サンプルコード
Option Explicit
addObject "dialog"
'Color Constants
Private Const cdlCCIFullOpen = &H2
Private Const cdlCCPreventFullOpen = &H4
Private Const cdlCCRGBInit = &H1
'Help Constants
Private Const cdlHelpContext = &H1
'Font Constants
Private Const cdlCFScreenFonts = &H1
Private Const cdlCFEffects = &H100
Private Const cdlCFLimitSize = &H2000
Private Const cdlCFForceFontExist = &H10000
dim selection
selection=0
while selection<>9
selection=inputbox("Choose Common Dialog Operation:" & chr(13) & "1. Color" & chr(13) & "2. Font" & chr(13) & "3. Save As " & chr(13) & "4. Select File" & chr(13) & "5. Show Help" & chr(13) & "9. End Program", "COMM Demo")
select case selection
case 1
cmdColor_click
case 2
cmdFont_click
case 3
cmdSaveAs_click
case 4
cmdSelectFile_click
case 5
cmdShowHelp_click
case else
selection=9
end select
wEnd
Private Sub cmdColor_Click()
dim txtcolorRGB
txtColorRGB=output.backcolor
'On Error Resume Next
'Generate error if cancel is pressed
dialog.CancelError = True
'Check if the text in the text box is a number,
'if so, use it as our initial color
If IsNumeric(txtColorRGB) then
dialog.Color = txtColorRGB.Text
dialog.Flags = cdlCCRGBInit
End If
'Ensure Full Open
dialog.Flags = dialog.Flags + cdlCCIFullOpen
'Show the dialog
dialog.ShowColor
'Determine action to take after dialog is dismissed
If Err.Number = 0 Then
txtColorRGB = dialog.Color 'everything OK
output.BackColor = dialog.Color
ElseIf Err.Number = 32755 Then
'The user canceled the dialog, so do nothing
Else
MsgBox "Error in Common Dialog ShowColor" & vbCrLf & vbCrLf & _
Err.Number & ": " & Err.Description, vbCritical, "Common Dialog ShowColor"
End If
End Sub
Private Sub cmdFont_Click()
'Set minimum and maximum font sizes
dialog.Max = 30
dialog.Min = 8
'Generate error if cancel is pressed
dialog.CancelError = True
'Setup flags for what we want to show
dialog.Flags = cdlCFForceFontExist Or cdlCFLimitSize Or cdlCFEffects Or cdlCFScreenFonts
On Error Resume Next
'Show the font dialog
dialog.ShowFont
'Determine action to take after dialog is dismissed
If Err.Number = 0 Then
on error goto 0
output.ForeColor = dialog.Color
output.FontBold = dialog.FontBold
output.FontItalic = dialog.FontItalic
output.FontName = dialog.FontName
output.FontSize = dialog.FontSize
output.FontStrikethru = dialog.FontStrikethru
output.FontUnderline = dialog.FontUnderline
ElseIf Err.Number = 32755 Then
'The user canceled the dialog, so do nothing
Else
MsgBox "Error in Common Dialog ShowFont" & vbCrLf & vbCrLf & _
Err.Number & ": " & Err.Description, vbCritical, "Common Dialog ShowFont"
End If
output.drawtext "This is the new font"
End Sub
Private Sub cmdSaveAs_Click()
dialog.DialogTitle = "Save As File"
dialog.InitDir = "\"
dialog.Flags = 0
dialog.Filter = "Text|*.txt"
dialog.DefaultExt = "txt"
dialog.filename = "" 'initialize
'Generate error if cancel is pressed
dialog.CancelError = True
On Error Resume Next
'Show the Save As Dialog
dialog.ShowSave
'Determine action to take after dialog is dismissed
If Err.Number = 0 Then
txtFileName = dialog.filename
ElseIf Err.Number = 32755 Then
'The user canceled the dialog, so do nothing
Else
MsgBox "Error in Common Dialog ShowSave" & vbCrLf & vbCrLf & _
Err.Number & ": " & Err.Description, vbCritical, "Common Dialog ShowSave"
End If
End Sub
Private Sub cmdSelectFile_Click()
dialog.DialogTitle = "Pick a text file to open"
dialog.InitDir = "\"
dialog.Filter = "Text|*.txt"
dialog.FilterIndex = 1
dialog.Flags = &H1000 Or &H800 'path and file must exist
dialog.filename = "" 'initialize
'Generate error if cancel is pressed
dialog.CancelError = True
On Error Resume Next
dialog.ShowOpen
'Determine action to take after dialog is dismissed
If Err.Number = 0 Then
txtFileName = dialog.filename
ElseIf Err.Number = 32755 Then
'The user canceled the dialog, so do nothing
Else
MsgBox "Error in Common Dialog ShowOpen" & vbCrLf & vbCrLf & _
Err.Number & ": " & Err.Description, vbCritical, "Common Dialog ShowOpen"
End If
End Sub
Private Sub cmdShowHelp_Click()
dialog.HelpFile = "nsbasic.htc"
'dialog.HelpCommand = cdlHelpContext
'dialog.HelpContext = "adjusting_memory_and_power_settings"
dialog.ShowHelp
End Sub