ダイアログ作成画面で作ったダイアログを、モードレスダイアログっぽく使うなんちゃってコード。
(本格的に、ダイアログを動的に生成するコードをゴリゴリ書くと、モードレスダイアログも普通にできるらしいけど、ちょっと面倒なので。)
Dim ContinuFlg As Boolean
Sub Main
DialogLibraries.LoadLibrary("Standard")
oDialog = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
oDialog.setVisible(true)
ContinuFlg = true
While ContinuFlg
wait(1000)
Wend
oDialog.dispose()
End Sub
Sub SetValue(ev)
oSelect = ThisComponent.getCurrentController().getSelection()
oSelect.setString(ev.ActionCommand)
End Sub
Sub DialogClose(ev)
ContinuFlg = false
End Sub
んで、↑みたいなダイアログを用意して、ListBoxのイベントの実行時に「SetValue」、閉じるボタンのイベントの実行時に「DialogClose」を設定するとおk。リストのアイテムを選んでダブルクリックしたりすると、モードレスっぽい動作で、選択中のセルに選択した文字列が入力されます。
ダイアログをexecuteせずに、無限ループで待機状態にするのがポイント。閉じるボタンを作って
無限ループを終了させる必要があります。なにこの裏技っぽいの。