フォーム&コンポーネント
グラフィカルコンポーネントの概要
スクリプトシステムでは、ビジュアルコンポーネントと非ビジュアルコンポーネントの2種類のコンポーネントを扱います。
ビジュアルコンポーネントはユーザーインターフェースの構築に使用され、ノンビジュアルコンポーネントは、 TimerOpenDialogMainMenu
- この
非ビジュアルコンポーネントは、予定された間隔で特定のコードを起動するために使用でき、ユーザーには一切表示されません。Timer - この
、Button およびEdit コンポーネントは視覚的コンポーネントです。Memo
どちらのタイプのコンポーネントもデザイン時に表示されますが、非視覚コンポーネントは実行時には表示されません。
- プロパティ
- イベント
- メソッド
A
イベント
A
すべてのスクリプトフォームには、1つ以上のコンポーネントが含まれています。コンポーネントは通常、情報を表示したり、ユーザーが操作を実行できるようにしたりします。たとえば、 LabelEditButton
フォーム上には任意のコンポーネントの組み合わせを配置することができ、スクリプトの実行中は、ユーザーがフォーム上のどのコンポーネントとも対話することができます。ユーザーがボタンをクリックしたり、 Edit
スクリプティング・システムは、スクリプト用の複雑なユーザー・インターフェースを作成するために使用できる多数のコンポーネントを提供しています。コンポーネントをフォームに配置するには、ツール・パレット・パネル上でそのアイコンを見つけ、ダブルクリックします。この操作により、アクティブなフォームにコンポーネントが配置されます。 ほとんどのコンポーネントの外観は、そのプロパティで設定されます。コンポーネントは最初はフォーム上のデフォルトの位置に配置されますが、必要に応じて位置を変更(ドラッグ)したり、サイズを変更(拡大・縮小)したりできます。また、後で
コンポーネントをフォームにドロップすると、スクリプティングシステムが自動的にそのコンポーネントを使用するために必要なコードを生成し、スクリプトフォームを更新します。フォーム上のコンポーネントを機能させるには、プロパティを設定し、目的のメソッドを使用するためのイベントハンドラコードを実装するだけで済みます。
スクリプトフォームの設計
スクリプトフォームは、環境内でユーザーと対話するように設計されています。スクリプトフォームの設計は、ビジュアル開発の中核をなします。
実際には、すべてのコンポーネントはスクリプトフォーム上に配置され、設定された各プロパティは、関連するスクリプトコードと関連付けられたフォームを記述するファイル( *.DFM*.PAS.PAS.DFM
スクリプトフォームとそのコンポーネントを操作する際は、 Caption
新しいスクリプト・フォームの作成
スクリプト・プロジェクトを開いた状態で、 EditScript1.pas
スクリプトフォームの表示
スクリプトには、スクリプトフォームが実行された際にフォームを表示するプロシージャが必要です。このプロシージャ内で、 ShowModalVisibleShowModal
Procedure RunDialog; Begin DialogForm.ShowModal; End;
この ShowModalRunDialogDialogFormDialogForm.ShowModal
以下に示す ModalResultmrOkmrCancelShowModal
Procedure TForm.OKButtonClick(Sender: TObject); Begin ModalResult := mrOK; End; Procedure TForm.CancelButtonClick(Sender: TObject); Begin ModalResult := mrCancel; End; Procedure RunShowModalExample; Begin // Form's Visible property must be false for ShowModal to work correctly. If Form.ShowModal = mrOk Then ShowMessage('mrOk'); If Form.ShowModal = mrCancel Then ShowMessage('mrCancel'); End;
ユーザーがこのスクリプトフォーム上のいずれかのボタンをクリックすると、ダイアログボックスが閉じます。 CloseModalResult
なお、フォームの ModalResultCancelCancelTrueSender.Cancel := TrueCancelButtonClick
ユーザーからの入力の受け付け
ユーザーからの入力を受け付けることができる一般的なコンポーネントの一つに、 TEditTMaskEdit
以下の例は、ユーザーが編集ボックスに何かを入力した後、ボタンをクリックした際の処理を示しています。ユーザーが編集コンポーネントに何も入力しなかった場合(空白の場合)、イベントハンドラは警告メッセージを表示します。
Procedure TScriptForm.ButtonClick(Sender : TObject); Begin If Edit1.Text = '' Then Begin ShowMessage('Warning - empty input!'); Exit; End; // do something else for the input End;
なお、ユーザーは
イベントへの対応
フォームまたはコンポーネント上のボタンがクリックされると、スクリプティングシステムは Altium Designer からのイベント通知を受け取り、適切なイベントハンドラメソッドを呼び出すことで応答します。
スクリプト コレクションの Scripts\DelphiScript Scripts\General\
スクリプト コレクションの Scripts\DelphiScript Scripts\General\
イベントハンドラの記述
フォームスクリプト内の各コンポーネントには一連のイベント名が設定されており、これらはスクリプトのイベントハンドラによって使用され、Altium Designer でのユーザーの操作に対してスクリプトがどのように反応するかを決定します。たとえば、ユーザーがフォーム上のボタンをクリックすると、Altium Designer はスクリプトにメッセージを送信し、スクリプトはこの新しいイベントに応答します。 OnClick
イベントに応答するコードは通常、DelphiScriptのイベントハンドラに含まれており、すべてのコンポーネントには反応可能な一連のイベントが用意されています。例えば、クリック可能なすべてのコンポーネントには、 OnClickOnEnterOnExitOnEnterOnExit
要約すると、イベントとは、ボタンのクリックなどAltium Designer内で発生する事象と、その事象に応答するコードとの間の関連付けです。応答するコードはイベントハンドラと呼ばれます。このコードはプロパティの値を変更したり、メソッドを呼び出したりします。
コンポーネントのプロパティ
コンポーネントのプロパティ一覧を表示するには、コンポーネントを選択し、
コンポーネントのイベント
コンポーネントが反応できるイベントの一覧を表示するには、コンポーネントを選択し、
たとえば、 TButtonOnClickOnClick

ボタンに CloseCloseClickOnClickClose
要約すると、フォーム上で、あるいは OnClick
コンポーネントのメソッド
コンポーネントのメソッドの一覧を確認するには、「コンポーネントリファレンス」ドキュメントを参照してください。
スクリプトフォームへのコンポーネントの配置
ツールパレットパネルのコンポーネントをスクリプトで使用するには、スクリプトフォームが存在している必要があり、そのフォーム上にコンポーネントをドロップできます。通常、コンポーネントをスクリプトフォームにドロップしても、これらのオブジェクトを手動で作成または破棄する必要はありません。スクリプトフォームが自動的に処理を行います。
また、スクリプトシステムは、コンポーネントを使用するために必要なコードを自動的に生成し、スクリプトフォームを更新します。あとは、プロパティを設定し、イベントハンドラにコードを記述し、必要なメソッドを使用して、正常に動作するスクリプトフォームを実装するだけです。
スクリプト内でのコンポーネントの作成
スクリプト内では、 NilConstructorOpenSaveTOpenDialogTSaveDialog
スクリプトフォームのカスタマイズ
スクリプトフォームをカスタマイズする際の重要なポイントは次のとおりです:
- フォームを他の開いているパネルの最前面に固定するには、
プロパティをFormStyle に設定します。fsStayOnTop - フォームのデフォルトの動作を定義するには、
を以下のいずれかの値に設定します。FormKind 、fkNone 、fkNormal またはfkServerPanel に設定します。fkModal - もし
が閉じられている場合、そのフォームはモーダルフォームとなります。つまり、フォームを閉じるなどの操作を行う前に、ユーザーからの入力を待つことになります。もしfkModal の場合、フォームはサーバーパネルとして表示されます。もしfkServerPanel の場合、フォームは通常の非モーダルフォームとして動作します。fkNormal - フォームのデフォルトのスクロールバーを非表示にするには、
およびHorzScrollBar プロパティの値を変更します。VertScrollBar - フォームをMDIフレームまたはMDI子にするには、
プロパティを使用します。FormStyle - フォームの境界線のスタイルを変更するには、
およびBorderIcons プロパティを使用します(変更結果は実行時に反映されます)。BorderStyle - 最小化されたフォームのアイコンを変更するには、
プロパティを使用します。Icon - アプリケーションウィンドウ内でのフォームの初期位置を指定するには、
プロパティを使用します。Position - フォームの初期状態(最小化、最大化、通常など)を指定するには、
プロパティを使用します。WindowState - 実行時にフォームの作業領域を定義するには、
およびClientHeight プロパティを使用します(なお、ClientWidth およびClientHeight はフォームの境界線内の領域を表します。ClientWidth 、Height はフォームの領域全体を表します)。Width - 実行時に、フォーム内でどのコントロールに初期フォーカスを当てるかを指定するには、
プロパティを使用します。ActiveControl - 選択されているコントロールに関係なく、すべてのキーボードイベントをフォームに渡すには、
プロパティを使用します。KeyPreview - フォームに複数のメニューが含まれている場合、特定のメニューを指定するには、
プロパティを使用します。Menu
スクリプト・フォームおよびコンポーネントの更新
スクリプトフォームの表示が古くなってしまった場合(たとえば、コントロールが更新されたり再描画されたりしていない場合など)、コントロールがフリーズしたり破損したりしているように見えることがあります。これは、そのスクリプトによる負荷の高いバックグラウンド処理が原因である可能性があります。
スクリプト フォームの UpdateUpdate
Procedure TConverterForm.loadbuttonClick(Sender: TObject); Begin If OpenPictureDialog1.Execute then Begin XPProgressBar1.Position := 0; XStatusBar1.SimpleText := ' Loading...'; XStatusBar1.Update; // loading a monochrome bitmap only Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); // Check if image is monochrome, otherwise prompt a warning If Image1.Picture.Bitmap.PixelFormat > pf1bit Then Begin ShowWarning('The image is not a monochrome!'); Close; End; lImageSize.Caption := IntToStr(Image1.Picture.Width) + ' x ' + IntToStr(Image1.Picture.Height) + ' mils'; convertbutton.Enabled := True; LoadButton.Enabled := False; XStatusBar1.SimpleText := ' Ready...'; XStatusBar1.Update; End; End;
上記のコードスニペットは、 PCB Logo CreatorScripts\Delphiscript Scripts\Pcb\PCB Logo Creator