Top > OOobbs > 14

OOobbs/14

  • サマリ: Dialogを常に前面に表示させておきたい
  • 環境: Calc
  • 状態: 未解決
  • 投稿者: suou?
  • 投稿日: 2004-05-26 (水) 18:00:07

質問

二つのcalcファイル、A.sxcファイルとB.sxcを開いているとき、 A.sxcがactiveの状態からB.sxcをActivateすることは「WindowのActivate」の投稿によってできるようになりました。ありがとうございました。

こんどは、Dialogにボタンを二つ置いて、AボタンをクリックするとA.sxcを表示し、BボタンをクリックするとB.sxcを表示することを試みています。

ところが、A.sxcを表示した状態からDialogをexecute()して、Bボタンを押すと確かに、B.sxcが表示されるのですが、Dialogが隠れてしまいます。B.sxcを表示した状態からDialogをexecute()して、Aボタンを押すと確かに、A.sxcが表示されるのですが、Dialogがやはり隠れてしまいます。これはB_frame.getContainerWindow.toFront()を使ってB.sxcを表示させるため、Dialogの前面に現れてしまうのは仕方ないのかも知れません。しかし、別のFrameが表示されるとDialogが隠れてしまうのは不便です。

これを解決するために、別のFrameを表示した後で、DialogをendExecute()し、改めてcreateUnoDialog()とexecute()を実行させると、再びDialogを前面に持ってくることができます。しかし、Dialogにリストボックスや他のコントロールを貼るようにした場合は表示が遅くなってしまうはずです。

Dialogを常に前面に表示させておく方法はあっていいと思うのですがこれが分かりません。どなたかいい方法を教えて頂けないでしょうか?

回答

  • 私がためしてみたところ,常に Basic Dialog を前面に表示させておく方法が見つかりませんでした。探しきれていないのかもしれませんが,execute した Basic Dialog にも toFront メソッドがあるのですが,そのダイアログを呼び出すマクロを起動した Window の上にしか表示されませんでした。

Basic Dialog をドキュメントの切り替えと作業に使用するようですが,Dialog を execute するときにマクロを実行したドキュメントに,マウスなどによるカーソルでのアクセスができないので,このような作業には向いていないと思います。この,ドキュメントへアクセスできなくなる挙動を解除する方法は現在のところありません (OpenOffice.org API ML から)。

Dialog を execute するためのマクロをコマンドラインから起動してみたのですが,一つのドキュメントから実行されたようなかたちに起動されてしまい,やはり toFront メソッドでは前面に持ってくることができませんでした。

  • はにゃ?? 2004-05-29 (土) 01:10:00
  • 早速のご回答ありがとうございます。ドキュメントを分ける理由は、ひとつのCalcドキュメントを要約表とし、他のCalcドキュメントはデータの集まりとしておくと、人とのやり取りはデータ・ドキュメントだけに絞れるからです。VBAではずっとこのようにやってきました。当面、execute→endExecute→再executeで切り抜けることに腹をきめることができました。ありがとうございました。 -- suou? 2004-05-31 (月) 11:23:35


Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes