CorelDRAWでマクロを利用するためのドキュメント「6.2 - Providing dialog boxes for macros」の和訳です。
注記:このトピックは、JavaScriptスクリプトに適用できません。
ダイアログ・ボックスは、より複雑なマクロ・ソリューションのために操作しやすいインターフェイスを提供します。
最良の結果を得るには、すべてのダイアログ・ボックスは、以下を提供する必要があります。:
- 意味のあるタイトル
- ダイアログ・ボックスをキャンセルするか、閉じるための明らかな機能
- 使いやすいレイアウト
- ユーザーが、ハウツー文書にアクセスすることができるHelpボタン
- コントロールごとのツールチップ(つまり、ControlTipText文字列)
次の2つの種類のダイアログ・ボックスがあります。:モーダルとモードレス。
モーダル・ダイアログ・ボックスを理解する
Understanding modal dialog boxes
モーダル・ダイアログ・ボックスは、ユーザーが、操作するまでアプリケーションをロックします。続いて、ダイアログ・ボックスを閉じます。マクロ・ソリューションのための、ほとんどの組み込みのダイアログ・ボックスは、モーダルです。そして、ほとんどのモーダル・ダイアログ・ボックスは、次のボタンを提供します。:
- OK-動作を実行し、続いて、ダイアログ・ボックスを閉じます。このボタンは、デフォルトです。
- Cancel-動作を実行することなく、ダイアログ・ボックスを閉じます。このボタンは、ダイアログ・ボックスの右上角のCloseボタンと同じ機能性を提供します。
加えて、いくつかのモーダル・ダイアログ・ボックスは、次のボタンを提供します:
- Apply-OKボタンをクリックすることで、コミットする、あるいは、Cancelボタンをクリックすることで、キャンセルをクリックすることができる動作を実行します。
最後に、ほとんどのウィザード・スタイルのダイアログ・ボックスは、次のボタンを提供します。:
- Previous-前のページに戻ります。このボタンは、ダイアログ・ボックスの最初のページ上で無効にすることができます。
- Next-次のページに進みます。このボタンは、ダイアログ・ボックスの最後のページ上で、「完了」ボタンで置き換えることができます。
- Finish -ダイアログ・ボックスのための動作を実行し、続いて、ダイアログ・ボックスを閉じます。
モードレス・ダイアログ・ボックスを理解する
Understanding modeless dialog boxes
モードレス・ダイアログ・ボックスは、アプリケーションをロックしません。そのため、ユーザーは、ダイアログ・ボックスを開いたままにして、アプリケーションで作業し続けることができます。この方法では、モードレス・ダイアログ・ボックスは、ドッキング・ウィンドウのように動作します。ほとんどのモードレス・ダイアログ・ボックスは、次のボタンを提供します。:
- モードレス・ダイアログ・ボックスは、アプリケーションをロックしません。そのため、ユーザーは、ダイアログ・ボックスを開いたままにして、アプリケーションで作業し続けることができます。この方法では、モードレス・ダイアログ・ボックスは、ドッキング・ウィンドウのように動作します。ほとんどのモードレス・ダイアログ・ボックスは、次のボタンを提供します。:
- Close-ダイアログ・ボックスを閉じます。このボタンは、動作が適用されたあと、使用されます。
モーダルとモードレス・ダイアログ・ボックスから選択する
Choosing between modal and modeless dialog boxes
あなたが、マクロ・ソリューションのためにダイアログ・ボックスを作成する前に、あなたが、ダイアログ・ボックスで何を実現するかを検討して、モーダルにするかモードレスにするかを決定する必要があります。
たとえば、あなたが、カスタマイズされた印刷ダイアログ・ボックスや保存ダイアログ・ボックスのような、「一回限り」のエンドツーエンドのソリューションを作成しているとしましょう。この場合、ユーザーが、指定された設定を繰り返し適用する可能性は低いため、あなたは、モーダル・ダイアログ・ボックスを提供するでしょう。
一方では、あなたが、選択した形状に適用する効果を設定するためのソリューションを作成しているとしましょう。ユーザーが、目的の設定を指定し、続いて、それらを繰り返し適用できるようにするために、あなたは、モードレス・ダイアログ・ボックスを提供するでしょう。
提供するダイアログ・ボックスの種類を選択した後に、あなたは、それを設定する準備ができます。詳細については、「ダイアログ・ボックスの設定」を参照してください。
ダイアログ・ボックスを設定し後、コーディングする準備が整います。詳細については、「ダイアログ・ボックスをコード化する」を参照してください。
ダイアログ・ボックスを設定する
Setting up dialog boxes
Script Editorのフォーム・デザイナーは、ダイアログ・ボックス上の設定のために、ツールへの簡単なアクセスを提供します。
あなたは、新しい空白のダイアログ・ボックスを作成することによって、フォーム・デザイナーにアクセスすることができます。プロジェクト・エクスプローラでは、あなたが、ダイアログ・ボックスを追加したいプロジェクトを右クリックします。続いて、挿入 > ユーザーフォームをクリックします。
フォーム・デザイナーの空のフォーム:
フォーム・デザイナーは、ダイアログ・ボックスを設計するために2つの主要な機能を提供します。:
- フォーム・デザイナー・ツールボックス
- ユーザーフォーム・ツールバー
フォーム・デザイナーは、ダイアログ・ボックスの命名とテストのための機能も提供します。
ダイアログ・ボックスを設計する
Designing dialog boxes
フォーム・デザイナー・ツールボックスは、ダイアログ・ボックスを設計するための主要なユーティリティです。それは、あなたが、ツールボックスから、ドラッグすることによって、コントロールをダイアログ・ボックスに追加できます。
フォーム・デザイナー・ツールボックス
フォーム・デザイナー・ツールボックスは、あなたが、ダイアログ・ボックスに、次のコントロールを追加できます。:
アイコン | コントロールの名前 | 機能 |
---|---|---|
Label | テキストを入力する領域を提供します。このコントロールのコーディングについては、「ダイアログ・ボックスでテキスト・ボックスの提供する」を参照してください。 | |
ComboBox | 一つの項目が選択できるリストを提供します。;オプションとして、テキストを入力する領域を提供します。このコントロールのコーディングについては、「ダイアログ・ボックスで組合せボックスとリスト・ボックスを提供する」を参照してください。 | |
ListBox | 複数の項目を選択できるリストを提供します。このコントロールのコーディングについては、「ダイアログ・ボックスで組合せボックスとリスト・ボックスを提供する」を参照してください。 | |
CheckBox | (クリックしてチェックマークを表示することで)有効、(クリックしてチェックマークを削除することで)無効、あるいは、(使用不可になる)灰色にできるチェック・ボックスを提供します。 | |
OptionButton | 一度に1つだけボタンを有効にできるように、同じGroupNameプロパティで、他のラジオ・ボタンにリンクする"radio button"を提供します。 | |
ToggleButton | 切り換えることができる(押された状態やされていない状態を表示する)ボタンを提供します。 | |
Frame | 項目をフレームに合わせてグループ化する | |
CommandButton | 割り当てられた動作を行うために、クリックできるボタンを提供します。このコントロールのコーディングについては、「ダイアログ・ボックスでボタンを提供する」を参照してください。 | |
TabStrip | 関連したコントロールの個別のビューを提供します。 | |
MultiPage | 複数ページのコントロールを提供します。 | |
ScrollBar | スクロールすることにより、値の範囲への即時にアクセスを提供します。 | |
SpinButton | (TextBoxコントロールのような)他のコントロールを強化するため、コントロールの値をより迅速に設定できます。 | |
Image | 画像を提供します。このコントロールのコーディングについては、「ダイアログ・ボックスで画像を提供する」を参照してください。 |
フォーム・デザイナー・ツールボックスも、あなたが、ダイアログ・ボックスでコントロールを選択し、移動できるピック・ツールを特徴としています。
フォーム・デザイナーで選択されたダイアログ・ボックス・コントロールに関する情報が含まれる「ヘルプ」トピックを表示するには、F1を押します。
フォーム・デザイナーは、あなたが、ダイアログ・ボックスを設計するときに使用できる、ユーザーフォーム・ツールバーへのアクセスも提供します。このツールバーに関する詳細については、「Script Editorツールバーを使用する」を参照してください。
ダイアログ・ボックスの命名
Naming dialog boxes
あなたがダイアログ・ボックスを設計し終わったあと、その権原を変更するといいかもしれません。それを選択するダイアログ・ボックスをクリックします。続いて、プロパティ・ウィンドウでは、Captionプロパティを変更します。
明確にするために、あなたは、それぞれのダイアログ・ボックスに、プロパティ・ウィンドウを使用して、説明的な、一意の名前を付けることができます。しかしながら、変数の命名については、標準的なプログラミング規則に従うことを忘れないでください。
ダイアログ・ボックスをテストする
Testing dialog boxes
いつでも、あなたは、F5キーを押して実行することで、ダイアログ・ボックスをテストできます。あなたが、ダイアログ・ボックスを設定し終わったあと、あなたは、それをコード化し始めることができます。詳細については、「ダイアログ・ボックスをコード化する」を参照してください。
ダイアログ・ボックスをコーディングする
Coding dialog boxes
ダイアログ・ボックスを設定した後、あなたは、それを表示するために、VBAコードを開発することができます。あなたは、テキスト・ボックス、コンビネーション・ボックス、リスト・ボックス、ボタン、画像を提供するコードを開発することもできます。
ダイアログ・ボックスを表示する
Displaying dialog boxes
ダイアログ・ボックスのためのShowメソッドは、あなたが、ダイアログ・ボックスが、どのように表示されるかを決定できます。
たとえば、次のコードは、ダイアログ・ボックスfrmFooFormを表示するために、Showメソッドを使用します。:
frmFooForm.Show
加えて、Showメソッドは、あなたが、ダイアログ・ボックスが、モーダルやモードレスかどうかを指定できるModalパラメータを提供します。このパラメータのためのvbModeless(あるいは、0)の値が、モードレス・ダイアログ・ボックスを作成する一方、vbModal(あるいは、1)の値は、モーダル・ダイアログ・ボックスを作成します。次のVBAの例は、モードレス・ダイアログ・ボックスを作成します。:
frmFooForm.Show vbModeless
マクロからのダイアログ・ボックスを開くために、それは、アプリケーションそのもの内から利用できます。あなたは、コード・モジュール内に、publicのサブルーチンを作成する必要があります。しかしながら、サブルーチンが、ダイアログ・ボックスのコード内やクラスモジュール内に存在する場合、サブルーチンは、アプリケーション内から、利用可能にすることができません。加えて、サブルーチンは、パラメーターを持つことができません。
次のVBAの例のサブルーチンは、モードレス・ダイアログ・ボックスとして、frmFooFormを開きます:
Public Sub showFooForm()
frmFooForm.Show vbModeless
End Sub
ダイアログ・ボックスを読み込むとき、それは、独自のUserForm_Initializeイベントをトリガーします。このイベント・ハンドラから、あなたは、ダイアログ・ボックスで、すべての関連したコントロールを初期化しなければなりません。詳細については、「イベント・ハンドラを提供する」を参照してください。
最後に、以下のVBAの例のように、あなたは、Showメソッドを使用して、現在のダイアログ・ボックスから追加のダイアログ・ボックスを開くこともできます。:
UserForm2.Show vbModal
しかしながら、コントロールは、すべての開いたダイアログ・ボックスがアンロードされるまで、あなたに、返されません。
ダイアログ・ボックスで、テキスト・ボックスを提供する
Providing text boxes in dialog boxes
テキストボックス(つまり、TextBoxコントロール)は、ユーザー入力の主流です。それらは、簡単に使用でき、速くプログラミングできます。そして、それらは、多くの目的に適しています。
それを初期化するとき、テキスト・ボックスでテキストを設定するために、以下のVBAの例のように、TextBoxコントロールのために、Text(デフォルト、あるいは、暗黙の)プロパティを設定します。
txtWidth.Text = "3"
txtHeight = "1"
TextBoxコントロールの値を取得するために、以下のVBAの例のように、PropertiesウィンドウのそのTextプロパティを取得します。:
Call SetSize(txtWidth.Text, txtHeight.Text)
ダイアログ・ボックスで、コンビネーション・ボックスとリスト・ボックスを提供する
Providing combination boxes and list boxes in dialog boxes
コンビネーション・ボックスでは、(つまり、ComboBoxコントロール)、ユーザーは、リストから項目を選択するか、テキスト・ボックスに値を入力することもできます。(Propertiesウィンドウの)StyleプロパティをfmStyleDropDownListに設定することで、あなたは、ユーザーが、ComboBoxコントロールに入力することを防ぐことができます。
リスト・ボックス(つまり、ListBoxコントロール)では、ユーザーは、リスト(一般的に、3~10個のアイテムから)から、一つ以上の項目を選択することができます。
任意の種類のリストを作成するために、あなたは、リストのAddItemでメンバ関数を呼び出す必要があります。この関数は、2つのパラメータを持ちます。:リスト内の文字列や数値、および位置。位置パラメータはオプションであり、省略すると、リストの最後の位置にアイテムが挿入されます。たとえば、次のVBAコードは、リストComboBox1に、4つのアイテムを追加します。:
ComboBox1.AddItem 1
ComboBox1.AddItem 2
ComboBox1.AddItem 3
ComboBox1.AddItem 0, 0
OKボタンが、クリックされるとき、どの項目が選択されたかテストするために、リストのためにListIndexプロパティをテストします。
以下のVBAの例のように、選択されたコンビネーション・ボックスのために、キャプションの値を取得するか、ボックスの一覧を示すために、項目のためにTextプロパティをテストします。:
Dim retList As String
retList = ComboBox1.Text
ダイアログ・ボックスでボタンを提供する
Providing buttons in dialog boxes
あなたは、CommandButtonコントロールを使用することで、ダイアログ・ボックスにボタンを追加することができます。デフォルトの大きさのボタンを追加するダイアログ・ボックスをクリックします。あるいは、カスタムサイズのものを作成するために、ドラッグします。キャプションをクリックして、編集する、あるいは、ボタンを選択し、プロパティ・ウィンドウ内で、そのCaptionプロパティを編集します。あなたは、ボタンの名前を、buttonOKやbuttonCancelのような、よりわかりやすい名前に変更したい場合もあります。
フォーム・デザイナーでボタンを設計する:
ほとんどのダイアログ・ボックスは、OKボタンとCancelボタンを持っています。しかしながら、そのダイアログ・ボックスが、ボタンのためにクリック・イベントを取り扱うためのコードを持つまで、ボタンは機能しません。(これは、VBAとVSTAのダイアログ・ボックスが、イベント駆動型であるためです。)
OKボタンのために、ボタンのためのイベント・ハンドラが呼び出されるように、ユーザーが、Enterキーを押して、ダイアログ・ボックスをアクティブにしたとき、あなたは、DefaultプロパティをTrueに設定できます。そうすれば、ボタンのためのクリック・イベント・ハンドラは、ダイアログ・ボックスの機能を実行します。続いて、そのダイアログ・ボックスをアンロードします。
幅と高さを設定することで、ダイアログ・ボックスが、選択されたCorelDRAWシェイプの寸法を設定するために使用される場合、続いて、OKボタンのためのクリック・イベント・ハンドラは、次のVBAコード・サンプルのようになります。(txtWidthとtxtHeightという2つのテキスト・ボックスが、既に作成されていることを前提としています):
Private Sub buttonOK_Click()
Me.Hide
Call SetSize(txtWidth.Text, txtHeight.Text)
Unload Me
End Sub
同様に、大きさを設定するCorelDRAWのサブルーチンは、次のようになります。
Private Sub SetSize(width As String, height As String)
ActiveDocument.Unit = cdrInch
ActiveSelection.SetSize CDbl(width), CDbl(height)
End Sub
ダイアログ・ボックスのコード・モジュール内から、ダイアログ・ボックス・オブジェクトは、暗黙的なため、すべてのコントロールは、名前で簡単にアクセスできます。他のモジュールから、コントロールは、完全な名前でアクセスする必要があります。(UserForm1.buttonOKのように)。
Cancelボタンは、最も単純なコントロールです:それは、他に何かをすることなく、フォームを破棄する必要があります。Cancelボタンにキャンセル動作を追加するために、Codeウィンドウで、そのコードを表示するフォーム・デザイナー内から、ボタンをダブルクリックします。これは、cmdCancel_Clickと呼ばれる新しいサブルーチンを作成します:
Cancelボタンのコードを持つCodeウィンドウ:
次のVBAコードでは、Buttonが、クリックされるとき、Cancelボタンが適用される場合、ダイアログ・ボックスを閉じます。
Private Sub cmdCancel_Click()
Unload Me
End Sub
あなたが、ダイアログ・ボックスのCancelプロパティをTrueに設定して、継続する場合、続いて、ユーザーが、Escapeを押すとき、cmdCancel_Clickイベントが、トリガーされ、提供されたコードが、フォームをアンロードします。
ダイアログ・ボックスで、画像を提供する
Providing images in dialog boxes
Imageコントロールは、グラフィクスをダイアログ・ボックスに配置するために使用されます。画像(ビットマップ)は、Pictureプロパティに含まれています。そのため、あなたは、(GIF、JPEGまたはWindowビットマップのBMPファイルのような)ファイルから、RGB画像を読み込むこともできます。あるいは、プロパティにそれを貼り付けます。
実行時に、あなたが、新しい画像をImageコントロールに読み込見たい場合、あなたは、Pictureプロパティを変更することができます。Pictureプロパティを変更するために、以下のVBAの例のように、LoadPicture関数を使用して、新しい画像ファイルにパスを指定します。:
Image1.Picture = LoadPicture("C:\Images\NewImage.gif")