ボタンとして実装した 3 つのオプションを必要とするダイアログがあります。モーダル ダイアログで提供するのが最適です。次のようなコードがあります。
class testDialog : uiframe
{
void OnOne( object self )
{
Result( "Doing one\n" )
self.close()
}
void OnTwo( object self )
{
Result( "Two.\n" )
self.close()
}
void OnThree( object self )
{
Result( "Three.\n" )
self.close()
}
}
void ThreeButtonDialog(String description)
{
TagGroup dialog_items
TagGroup dialog_tags = DLGCreateDialog( "Test Dialog", dialog_items )
dialog_items.DLGAddElement( DLGCreateLabel( description ).DLGAnchor( "North" ) ).dlgexternalpadding(5,5)
TagGroup button_items
TagGroup button_fields = DLGCreateGroup( button_items )
DLGLayout( button_fields, DLGCreateTableLayout( 3, 1, 0 ) )
TagGroup one_button = DLGCreatePushButton("Option1", "OnOne")
TagGroup two_button = DLGCreatePushButton("Option2", "OnTwo")
TagGroup three_button = DLGCreatePushButton("Option3", "OnThree")
button_items.DLGAddElement(one_button)
button_items.DLGAddElement(two_button)
button_items.DLGAddElement(three_button)
dialog_items.DLGAddElement( button_fields )
Object dialog = alloc( testDialog ).init(dialog_tags)
dialog.Display("Test...")
DocumentWindow dialogwin=getdocumentwindow(0)
WindowSetFrameposition(dialogwin, 300, 200)
}
ThreeButtonDialog("test")
これは DM2 で正常に機能します。ただし、DM1 ではエラーが発生します。スクリプト オブジェクトには close メソッドがありません。
代わりに、窓を閉めようと思いました。上記の self.close を次のように置き換えます。
DocumentWindow dialogwin=getdocumentwindow(0)
dialogwin.WindowClose(0)
これにより、DM1 と DM2 の両方がクラッシュします。より良い方法はありますか?代わりに、ラジオ ボタンを使用してモーダル ダイアログを行いますか?