• ベストアンサー

クリスタルレポートのプレビュー画面を常に手前に表示しておく

VB6.0 SP5 で クリスタルレポートの帳票を 作っています。 今、プレビュー画面が開いているFormのうしろに回り込んでしまうという現象が起きていて、これを防ぎたいのですが、どなたか良い方法を知りませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Futosi
  • ベストアンサー率46% (23/50)
回答No.2

VB6.0ではuser32.dllのAPIを使う必要があります。 Declare Function SetWindowPos Lib "user32.dll" (ByVal A As Long, ByVal B As Long, ByVal C As Long, ByVal D As Long, ByVal E As Long, ByVal F As Long, ByVal G As Long) As Long これを標準モジュールの文頭に貼り付けてください。 要は7個のLong引数を持った関数です。 あとは、常に手前に表示したいもののハンドルをAに代入してこれを呼び出します。 デザイン時のオブジェクトなのでハンドルはhWndプロパティで簡単に出ますね。 以下はFrmReportフォーム(フォームオブジェクト)を最前面に持っていく処理です。 Re = SetWindowPos(FrmReport.hWnd, -1, 0, 0, 0, 0, 1 or 2) 解除したいときは以下を実行します。 Re = SetWindowPos(FrmReport.hWnd, -2, 0, 0, 0, 0, 1 or 2) B以降を触ると様々な効果がありますが、それはAPIを勉強すればすぐに分かりますね。 ただ使うだけならこれで十分です。

GBSGBS
質問者

お礼

丁寧な回答ありがとうございます! 早速、試してみます!

その他の回答 (2)

  • Futosi
  • ベストアンサー率46% (23/50)
回答No.3

補足です。 下のURLのものでよかったら参考にしてください。 クリレポのプレビュー画面のハンドルも分からないようですね。 触ったことがないのでよく分かりませんが、クリレポのプレビューを 呼び出す処理を教えて頂ければ、ハンドルの取得方法を探してみますよ。 呼び出す処理に必要なもの ●使用しているコンポーネント (Crystal Analysis Common Controls 1.0を呼び出したら6つのオブジェクトが 出てきたのですが、どれを使用したらプレビューが出るか) ●そのコンポーネントで最低限の(簡単な)プレビューを表示する方法

参考URL:
http://www.bh.wakwak.com/~doji/topmost.zip
  • mfuku
  • ベストアンサー率50% (173/345)
回答No.1

プレビュー画面を表示したあとに、 プレビュー画面のフォーム名.SetFocus あるいは プレビュー画面のフォーム名.ZOrder 0 とすればOKです。 例) frmPreview.Show frmPreview.Setfocus

GBSGBS
質問者

補足

回答ありがとうございます。 プレビュー画面のフォーム名が分からないのですが・・? VBのフォームではなく、クリスタルレポート自身の プレビュー画面なのですが、その場合フォーム名は 何になるのでしょう? また プレビュー画面のフォーム名.SetFocus あるいは プレビュー画面のフォーム名.ZOrder 0 は、どこに記述すればよいのでしょうか?

関連するQ&A