これは素晴らしいものです!良いニュース:解決策があります。
事実、PRACTICEスクリプトのマクロ置換は、実際のPRACTICEコードのどこでも動作します。しかし、ダイアログの説明は練習コードではありません。ダイアログの説明はスクリプト内に埋め込まれています。これは、HTMLファイルに(例えば、データURIを介して)画像を埋め込むようなものである。イメージはHTMLでもありません。
カスタムダイアログを表示するコマンドはDIALOG.view <dlg-file>
です。しかし、DIALOG.viewは、埋め込まれたブロック(丸いカッコで、別々の行にあります)とともに使用することもできます。それはあなたがすることです。
そしてここにはトリックが来る:あなたは(&+
すべての単語を練習マクロに置き換えられ、全体埋め込まれたブロック内&
で始まるオープニングブレースを交換する場合 - 限り、その名前のマクロが存在するとして。
は、だからここにあなたが行く:
PRINT "Workspace is &WORKSPACE"
DIALOG
(&+
HEADER "&WORKSPACE"
; Large menu here...
)
はマクロ置換はその後、DIALOGブロックでどこでも本当に表示されていることに注意してください。これは、特にDIALOGにPRACTICEコードが埋め込まれている場合に、望ましくない副作用を引き起こす可能性があります。例えば:あなたは今ダイアログ・ブロックのためのマクロ置換を有効にした場合
DIALOG
(
BUTTON "Push me"
(
PRIVATE &myfile
DIALOG.File.open *.txt
ENTRY %LINE &myfile
PRINT "You picked file '&myfile'"
)
)
それはまた、あなたが望むものではありません通常PRIVATEとENTRYコマンドの& myfileのを、置き換えます。 。あなたが明示的にDIALOGに埋め込まPRACTICEスクリプトにダウンマクロ置換を無効にした場合、それが動作するはずしかし
「(& - 」だから、あなたが得る:
DIALOG
(&+
HEADER "&WORKSPACE"
BUTTON "Push me"
(&-
PRIVATE &myfile
DIALOG.File.open *.txt
ENTRY %LINE &myfile
PRINT "You picked file '&myfile'"
)
)
その他の問題を回避するには、マクロ&を定義することですあなたが実践マスターに接近しているこの事をマスターした場合
LOCAL &WORKSPACE &myfile
&WORKSPACE="Select A Task To Run"
&myfile="&"+"myfile" // <- This is the trick!
DIALOG
(&+
HEADER "&WORKSPACE"
BUTTON "Push me"
(
PRIVATE &myfile
DIALOG.File.open *.txt
ENTRY %LINE &myfile
PRINT "You picked file '&myfile'"
)
)
:実際には、テキスト「& MYFILE」が含まれていmyfileを!ここで
カスタムダイアログのテキストとヘッダの両方をカスタマイズするための別のより簡単な解決策は以下のとおりです。
- はDIALOGコマンドの前にWinPOSコマンドでDIALOGの説明内のHEADERステートメントを交換してください。
- は
例えばDYNTEXTと対話記述内のテキスト文を交換し、DIALOG.Setと対話記述外部テキストを設定:
PRIVATE &myheader &mytext
&myheader="Select A Task To Run"
&mytext="zaphod beeblebrox is an awesome frood"
WinPOS ,,,,,,,"&myheader"
DIALOG
(
POS 0 0 30. 1
DlgText1: DYNTEXT ""
)
DIALOG.Set DlgText1 "&mytext"
この第2のアプローチは、単にDIALOG内部マクロ置換を回避します説明。したがって、質問に対する正確な答えではありませんが、実際の問題に対するより良い解決策かもしれません。