# スクリプトのテキストモード

## テキストモードについて

テキストモードを使用して、ブロックモードのスクリプトと同様にスクリプトを設定できます。数値演算 (sine、cosine 等)、論理演算 (&&、|| 等)、比較演算 (==、!= 等) など、ブロックモードのスクリプトの画面編集ソフトウェアでサポートされているオペレーションは、テキストモードのスクリプトでもサポートされています。[ツールチェスト] の一覧にないスクリプトはサポートされていません。

### スクリプト編集画面

テキストモードでは、スクリプトはスクリプトエディターによってセクションに分けられ、各スクリプトセクションにはトリガーと、1 つまたは複数のオペレーションがあります。

タッチ、周期/スケジュール、条件付きなどのトリガーは関数の形になっています。トリガーにパラメーターが必要な場合は、関数のパラメーターとして渡します。

オペレーションはステートメントの形をとり、ステートメントの末尾にはセミコロン (;) を付けます。

テキストモードの形式は、以下の例のようになります。

- 'onClick' は、クリックトリガーのトリガーハンドラーです。
- 1 番目のパラメーター '$GraphicObject' は、トリガーのソースです。
- 2 番目のパラメーター '$Math.max(EXPRESSION1, EXPRESSION2);' は、トリガーによって実行されるオペレーションのセットです。オペレーションは、矢印 '=>' で識別されます。

#### オブジェクトと変数

参照するオブジェクトや変数を識別するためにキーワードを追加します。キーワードの前には、'$' 記号を付けます。(以下の表を参照してください。)

モジュール識別子

キーワード | 説明 | 例
$Alarm | アラームプロパティにアクセスします。 | $Alarm.AlarmGroup1.Var1_HiHi.Message
$AlarmGroup | アラームグループプロパティにアクセスします。 | $AlarmGroup.AlarmGroup1.CurrentActiveCount
$AllAlarm | すべてのアラームのプロパティにアクセスします。 | $AllAlarm.MaxRecord
$SystemErrorGroup | システムエラーグループとして識別します。 |
$OperationLog | 操作ログプロパティにアクセスします。 | $OperationLog.ExportData.FolderName
$RecipeControl | レシピコントロールプロパティにアクセスします。 | $RecipeControl.RecipeControl1.RecipeID
$Ingredient | レシピデータプロパティにアクセスします。 | $Ingredient.RecipeFamily1.RecipeGroup1.Ingredient1.Value
$Local | ローカル変数プロパティにアクセスします。 | $Local.Var1.Value
$GraphicObject | グラフィックオブジェクトプロパティにアクセスします。 | $GraphicObject.NumericDisplay1.CurrentValue
$Screen | 画面プロパティにアクセス、または特定の画面上にある項目のプロパティにアクセスします。この識別子を使用することで、画面/コンテンツの名前とオブジェクトの名前の重複を避けることができます。 | $Screen.Screen1
$Device | ドライバーまたは機器のプロパティにアクセスします。 | $Device.Driver1.Equipment1.OnScanMode
$Target | 表示器プロパティにアクセスします。 | $Target.Preferences.ColorSetID
$Math | 演算オペレーションにアクセスします。 | $Math.abs(-100)
$Enums | ファイル操作やデータフォーマットなど、スクリプトで指定したオペレーションや値にアクセスします。 | $Enums.FileOperation.CopyPaste $Enums.DataFormat.Float

スクリプトでオブジェクトや変数を参照することによって、オブジェクトや変数のプロパティを操作できます。例、'Var1.Quality'、'$GraphicObject.Ellipse1.Thickness'。

スクリプト内でグラフィックオブジェクト、変数、アラームグループ、ユーザーグループ、ロギンググループ、レシピの名前を入力すると、その名前がハイライトされます。

#### スクリプトモードの変更

スクリプトエディターでは、[ブロック] モードまたは [テキスト] モードのどちらかを使用できます。同時に両方のモードでスクリプトを編集することはできません。

初期設定は、[ブロック] モードです。

スクリプトモードを変更する場合は、[プロジェクト] ➞ [設定] に移動し、[プロパティ] ウィンドウ ➞ [基本] ➞ [スクリプト] ➞ [スクリプトモード] で、[ブロック] または [テキスト] を選択します。

MEMO: 無効なスクリプトがある場合、スクリプトモードの変更はできません。ただし、データエラーがあってもスクリプトモードの変更は可能です。

## テキストモードでのスクリプトの操作

### 関数の追加

テキストモードでスクリプトを編集すると、ツールチェストにトリガー、オペレーション、ロジック、式の一覧が表示されます。トリガーをダブルクリックするとスクリプトエディターに新しいスクリプトセクションが作成され、選択したトリガーのデフォルトコードが表示されます。

また、以下の方法で関数を追加することもできます。
ツールバーからトリガーを追加できます。

- テキストモードで新しい空のスクリプトを編集する場合は、ツールバーから [ブランク] を追加するか、キーボードのショートカット Ctrl+Shift+N を使用します。

- 画面のオブジェクトによってトリガーされるスクリプトを作成する場合、画面を開いてオブジェクトを選択すると、[イベント] ウィンドウにそのオブジェクトで使用可能なトリガーの一覧が表示されます。[+] をクリックすると、新しいスクリプトセクションにそのトリガーが追加されます。

### ソースと表示器の追加

- テキストモードでは、スクリプトエディターに入力補助機能が付いています。スクリプトエディターで文字を入力すると、スクリプトキーワード、オブジェクト名、関数名など、文字と一致する入力可能な項目が表示されます。キーワード、オブジェクト名、関数などの挿入したい項目を選択します。
  オブジェクト名とピリオド (.) を入力すると、入力可能なオブジェクトのプロパティが表示されます。プロパティを選択してスクリプトに挿入します。

- テキストモードでは、ローカル変数やグローバル変数をその場で作成することもできます。それ以外のオブジェクトをスクリプトで作成することはできません。

1. スクリプトで未定義の変数を使った場合、その変数の上にマウスカーソルを合わせます。

   MEMO: ローカル変数を作成する場合、変数名に接頭辞 "$Local" を付けます。

2. アイコンをクリックし、ポップアップメニューから [変数の作成] または [ローカル変数の作成] を選択します。

3. サブメニューから作成する変数のデータタイプを選択します。

### ツールチェスト

- ツールチェストで </> をクリックすると、スクリプトの構文が表示されます。

### コメント

テキストモードでは、ダブルスラッシュ "//" でスクリプトにコメントを付けることができます。"/*" と "*/" の間に複数行のコメントを入れて追加することもできます。コメントは、ステートメントの末尾や独立した行として追加できます。

MEMO:

- [スクリプトモード] を [ブロック] モードから [テキスト] モードに変更すると、コメントブロックは "//" コメントに変換されます。

- [スクリプトモード] を [テキスト] モードから [ブロック] モードに変更すると、以下のようになります。

- トリガーレベルの "//" および "/*" "*/" コメントは、コメントブロックに変換されます。

- ブロックモードでは、トリガーのみ [コメント] ブロックに対応しているため、トリガーレベル以外にある他の "//" ステートメントや "/*" "*/" は変換されません。

### 検索と置換

- 検索: キーボードのショートカットキー Ctrl+F を使用すると、テキストモードのスクリプトエディターの右上に検索ボックスが表示されます。ボックスに検索するテキストを入力します。下矢印 または上矢印 をクリックすると、次または前の一致するテキストを検索できます。 または アイコンを選択すると、大文字と小文字を区別した検索、または完全一致検索を行うことができます。

- 置換: キーボードのショートカットキー Ctrl+H を使用すると、テキストモードのスクリプトエディターの右上に検索と置換ボックスが表示されます。ボックスに検索するテキストと置換するテキストを入力します。下矢印 または上矢印 をクリックすると、次または前の一致するテキストを検索できます。 または アイコンを選択すると、大文字と小文字を区別した検索、または完全一致検索を行うことができます。置換 アイコンをクリックすると、現在の一致するテキストを置換することができます。すべて置換 アイコンをクリックすると、すべての一致するテキストを置換することができます。

検索と置換用のショートカットキーは次の表のとおりです。

ショートカットキーアイコン | ショートカットキー | 説明
– | Ctrl+F | 検索
– | Ctrl+H | 検索と置換
| F3 | 次を検索
| Shift+F3 | 前を検索
| Alt+R | 置換
| Alt+A | すべて置換
| Alt+C | 大文字と小文字を区別
| Alt+W | 完全一致

検索と置換を切り替える場合は、ショートカットキーを入力するか、[検索] ボックスの左にある上 または下 のアイコンをクリックします。

## 制限事項

#### スクリプトモード

- 無効なスクリプトがある場合、スクリプトモードの変更 (ブロックモードからテキストモード、またはテキストモードからブロックモード) はできません。ただし、データエラーがあってもスクリプトモードの変更は可能です。

- ブロックモードのスクリプトでは、コメントはトリガーブロックのコメントブロックのみサポートしています。そのため、[スクリプトモード] を [ブロック] モードに変更したときに、テキストモードでスクリプトのトリガー以外の場所に追加されたコメントは保存されません。

#### 名前

- プロジェクトのオブジェクトが削除されたり名前が変更されたりすると、スクリプトにあるそのオブジェクトへの参照が未定義のエラーとして表示されます。