VBScript フォーム コンポーネントの使用

VBScript フォームでのコンポーネントの使用

フォームおよびコンポーネントは、Embarcadero Delphi™のVisual Component Library (VCL) を基盤としていますが、Altium Designerでは、Delphiベースの Tool Palette が、VBScriptを使用する際にフォーム上にコントロールを配置するために依然として使用されます。また、Altium DesignerにおけるフォームやコンポーネントのDelphi由来の背景にかかわらず、イベントハンドラは生成され、コードはVBScript言語を使用して記述されます。

コンポーネントの概要

スクリプトシステムでは、ビジュアルコンポーネントとノンビジュアルコンポーネントの2種類のコンポーネントを扱います。ビジュアルコンポーネントはユーザーインターフェースの構築に使用され、ノンビジュアルコンポーネントは、 TimerOpenDialog および MainMenu コンポーネントが提供する機能など、さまざまなタスクに使用されます。たとえば、非ビジュアルの Timer コンポーネントは、スケジュールされた間隔で特定のコードを実行するために使用され、ユーザーには一切表示されません。 ButtonEdit および Memo コンポーネントは視覚的コンポーネントであり、ユーザーには表示されます。

どちらのタイプのコンポーネントもデザイン時には表示されますが、非視覚的コンポーネントは実行時には表示されません。 Tool Palette パネルにあるコンポーネントはオブジェクト指向であり、以下の3つの項目があります:

  • プロパティ
  • イベント
  • メソッド

A property は、オブジェクトの可視的な動作または操作に影響を与えるオブジェクトの特性です。たとえば、 Visible プロパティは、このオブジェクトがスクリプト形式で表示されるかどうかを決定します。

イベントとは、スクリプトによって検出される動作や発生を指します。スクリプト内では、プログラマーは event は、スクリプトによって検出されるアクションまたは発生事象です。スクリプト内では、プログラマーは、マウスのクリックなど特定のイベントを捕捉するように設計された各イベントハンドラに対してコードを記述します。

A method とは、常にオブジェクトに関連付けられ、そのオブジェクトの挙動を定義する手続きのことです。

すべてのスクリプトフォームには、1つ以上のコンポーネントが含まれています。コンポーネントは通常、情報を表示したり、ユーザーがアクションを実行できるようにしたりします。たとえば、Labelは静的なテキストの表示に使用され、Editボックスはユーザーがデータを入力するために使用され、Buttonはアクションを開始するために使用されます。

フォーム上には、任意の組み合わせでコンポーネントを配置することができ、スクリプトの実行時(ランタイム)にユーザーがそれらと対話できるようになります。ユーザーがボタンをクリックしたり、編集ボックスのテキストを変更したりした際に何が起こるかを決定するのは、スクリプトプログラマーの役割です。

スクリプティングシステムは、スクリプト用の単純なものから複雑なものまで、さまざまなユーザーインターフェースを作成するための幅広いコンポーネントを提供しています。フォームに配置できるすべてのコンポーネントは、「ツールパレット」パネルにあります。

コンポーネントをフォームに配置するには、 Tool Palette パネル上でそのアイコンを見つけ、ダブルクリックします。この操作により、コンポーネントがアクティブなフォーム上に、デフォルトの位置、幅、高さで配置されます。ほとんどのコンポーネントの外観は、関連付けられたプロパティのセットによって決定されます。

デフォルトの位置と幅・高さで配置されたコンポーネントは、マウスを使用するか、または Object Inspector パネルを使用して、サイズ変更や位置変更を行うことができます。コンポーネントをフォームにドロップすると、スクリプティングシステムが、そのコンポーネントを使用するために必要な基本コードを自動的に生成し、スクリプトフォームを更新します。フォーム上のコンポーネントを動作させるには、プロパティを設定し、イベントハンドラにコードを記述し、必要に応じてメソッドを使用するだけで済みます。

スクリプトフォームの設計

スクリプトフォームは、Altium Designer 環境内でユーザーと対話するように設計されています。スクリプトフォームの設計は、Altium Designer におけるビジュアル開発の中核をなします。

スクリプトフォームに配置された各コンポーネントや設定されたすべてのプロパティは、そのフォームを記述するファイル( *.dfm ファイル)に保存され、関連するスクリプトコード( *.vbs ファイル)と関連付けられます。したがって、すべてのスクリプトフォームに対して、 *.vbs ファイルと、それに対応する *.dfm ファイルが存在します。

スクリプトフォームとそのコンポーネントを操作する際、そのプロパティには Object Inspector パネルを使用して、そのプロパティにアクセスしたり変更したりできます。複数のコンポーネントを選択するには、Shift キーを押しながらコンポーネントをクリックするか、スクリプトフォーム上のコンポーネントを囲むように選択矩形をドラッグします。スクリプトフォームには、 Caption プロパティにマッピングされています。 Object Inspector にマッピングされたタイトルを持っています。

新しいスクリプトフォームの作成

スクリプト・プロジェクトを開いた状態で、 Projects パネル内のプロジェクトを右クリックし、 Add New to Project を選択し、さらに VB Script Form 項目を選択します。デフォルトの EditScript1.vbs 名前で新しいスクリプトフォームが作成されます。あるいは、 *.PrjPCB プロジェクト内で、[ File » New » Script Files » VB Script Form コマンド。

スクリプトフォームの表示

スクリプトには、Altium Designer でスクリプトフォームが実行された際にフォームを表示するルーチンが含まれている必要があります。このルーチン内で、 ShowModal メソッドを呼び出します。フォームの Visible プロパティを false(チェックなし)に設定する必要があります。これにより、スクリプトフォームの ShowModal メソッドが正しく動作するように、フォームのプロパティを false(チェックなし)に設定する必要があります。

ShowModal の例

Sub RunDialog
  DialogForm.ShowModal
End Sub

上記の ShowModal 例は、スクリプトから RunDialog スクリプトからダイアログが呼び出された際にスクリプトフォームを表示する簡単な方法です。なお、 DialogForm オブジェクトのコンポーネントに値を割り当てることができる点に注意してください。 DialogForm.ShowModal 呼び出される前に、オブジェクトのコンポーネントに値を割り当てることができます。

ModalResult 以下の例は、より複雑です。後半のメソッドは、スクリプトフォーム内のボタンに使用されます。これらのスクリプトメソッドは、ユーザーが OK または Cancel のいずれかをクリックすると、ダイアログを終了させます。これにより、が返されます。 mrOk または mrCancelShowModal メソッドからまたはを返します。

ModalResult Example

sub bOKButtonClick(Sender)
  ModalResult := mrOK
end sub
 
sub bCancelButtonClick(Sender)
  ModalResult := mrCancel
end sub
 
sub RunShowModalExample
  'Form Visible property must be false for ShowModal to work properly.
  If Form.ShowModal = mrOk     Then ShowMessage("mrOk")
  If Form.ShowModal = mrCancel Then ShowMessage("mrCancel")
end sub

上記と同じ処理は、 ModalResult 値を mrOk に設定することで、上記と同じ処理を実現できます。 OK ボタンについてはに、 mrCancel に設定することで実現できます。 Cancel ボタンをそれぞれに設定することで実現できます。ユーザーがどちらかのボタンをクリックすると、ダイアログボックスが閉じます。 Close メソッドを呼び出す必要はありません。 ModalResult メソッドが設定されていると、スクリプトエンジンがスクリプトフォームを自動的に閉じるため、このメソッドを呼び出す必要はありません。

なお、フォームの ModalResult を、ユーザーが Esc キーを押した際にフォームをキャンセルするようにするには、 Cancel ボタンを「キャンセル」に設定するには、 Object Inspector 、または Sender.Cancel := True フォームのボタンの CancelButtonClick イベントハンドラにを挿入します。

ユーザー入力の受け付け

ユーザーからの入力を受け付けることができる一般的なコンポーネントの一つに、 EditBox コンポーネントです。この EditBox コンポーネントには、ユーザーが文字列を入力できるテキストフィールドがあります。また、テキストフィールドに入力マスクが設定された編集コンポーネントである「マスク付き編集コンポーネント」など、テキストを受け付けることができる他のコンポーネントもあります。マスクは入力を制御(フィルタリング)し、パラメータ文字列として保存されます。

以下の例は、ユーザーが編集ボックスにテキストを入力した後、ボタンをクリックした際に何が起こるかを示しています。なお、ユーザーが編集コンポーネントにテキストを入力しなかった場合、イベントハンドラは警告メッセージを表示することに注意してください

sub TScriptForm.ButtonClick(Sender)
  If Edit1.Text = "" Then
  ShowMessage("Warning - empty input!")
  Exit
  End
  ' do something else for the input
End sub

なお、ユーザーは Tab キーを使用するか、別のフォーム・コントロールをクリックすることで、フォーム上の入力フォーカスを移動できることに注意してください。

イベントへの対応

ユーザーがフォームまたはコンポーネントを選択すると、Altium Designer はスクリプティングシステムにメッセージを送信し、スクリプティングシステムは適切なイベントハンドラメソッドを呼び出すことでイベント通知に応答します。

イベントハンドラの記述

スクリプトは、実行時にコンポーネントで発生する可能性のあるイベントに応答する必要がある場合があります。イベントとは、ボタンのクリックなど Altium Designer での発生事象と、その事象に応答するコードとの関連付けのことです。応答するコードはイベントハンドラであり、プロパティの値を変更したり、メソッドを呼び出したりします。

コンポーネントのプロパティには、それぞれ一連のイベント名が割り当てられています。スクリプトプログラマは、Altium Designer におけるユーザーの操作に対してどのように反応するかを決定します。たとえば、ユーザーがフォーム上のボタンをクリックすると、Altium Designer はスクリプトにメッセージを送信し、スクリプトはこの新しいイベントに反応します。 OnClick ボタンのイベントが指定されている場合、そのコードが実行されます。

このようなコンポーネントにはすべて、フォーカスを取得および喪失するイベントも用意されています。ただし、OnEnterおよびOnExitのコードが指定されていない場合(OnEnter - コントロールがフォーカスを持っている場合; OnExit - コントロールがフォーカスを失う)、そのイベントはスクリプトによって無視されます。

コンポーネントのプロパティ

コンポーネントのプロパティ一覧を表示するには、コンポーネントを選択し、 Properties タブを Object Inspector パネルでタブを有効にします。

コンポーネントのイベント

コンポーネントが反応できるイベントの一覧を表示するには、コンポーネントを選択し、 Events タブを有効にします。コンポーネントのイベントコンポーネントが反応できるイベントの一覧を表示するには、コンポーネントを選択し、 Object Inspector パネル内のタブを有効にします。コンポーネントが反応するイベント処理プロシージャを作成するには、適切なイベントを選択し、その名前をダブルクリックします。

たとえば、 Button1 コンポーネントを Tool Palette パネルからコンポーネントを選択し、スクリプトフォームにドロップして、 OnClick イベント名の横をダブルクリックします。スクリプトシステムがコードエディタにフォーカスを戻し、そこで OnClick イベント用のコードの骨格が作成されています。ボタンに Close メソッドが定義されている場合、そのボタンがクリックされると、そのイベントハンドラが「on-click」イベントをキャプチャし、イベントハンドラ内のコード CloseClick イベントハンドラにメソッドが定義されている場合、ボタンがクリックされると、そのイベントハンドラが「on-click」イベントを捕捉し、イベントハンドラ内のコードが実行されます。つまり、 Close メソッドがスクリプトフォームを閉じます。

要約すると、イベントハンドラは、フォーム上のコンポーネントを選択するか、または Object Inspector パネル上でコンポーネントを選択し、インスペクタの Events タブで目的のイベント(たとえば OnClick)の右側をダブルクリックすることで作成されます。これにより、スクリプト内に適切なコードの骨格が表示されます。

あるいは、ボタンをダブルクリックすると、スクリプトシステムが OnClick イベントのハンドラを追加します。その他の種類のコンポーネントでは、デフォルトの動作がまったく異なります。

コンポーネントのメソッド

コンポーネントのメソッドの一覧については、「コンポーネントリファレンス」を参照し、詳細については Embarcadero Delphi のドキュメントを参照してください。

実行時のコンポーネントの作成

スクリプト内でコンポーネントを直接作成および破棄することができます。通常、フォームのハンドルを渡す必要はありません。スクリプトフォームが自動的に処理してくれるためです。その代わりに、コンポーネントのコンストラクタに Nil パラメータをコンポーネントのコンストラクタに渡してください。

たとえば、 Open および Save ダイアログは、作成および破棄が可能です( TOpenDialog および TSaveDialog クラス)として、およびダイアログを作成・破棄できます。

AI-LocalizedAI で翻訳
問題が見つかった場合、文字/画像を選択し、Ctrl + Enter キーを押してフィードバックをお送りください。
機能の提供状況

ご利用可能な機能は、お使いのAltiumソリューション(Altium DevelopAltium Agile TeamsAltium Agile Enterprise、または有効な契約期間中のAltium Designer)によって異なります。

実際にお使いのソフトウェアに文書化されている機能が表示されない場合は、詳細についてAltium Sales までお問い合わせください。

従来のドキュメント

Altium Designer のドキュメントは、バージョンごとに掲載されなくなりました。Altium Designer の旧バージョンのドキュメントは、Other Installers ページの Legacy Documentation の項目をご覧ください。

Content