Home

6.2-マクロのためにダイアログ・ボックスを提供する

新規作成日 2020-01-23
最終更新日

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")
このエントリーをはてなブックマークに追加