- ベストアンサー
クリスタルレポートのプレビュー画面を常に手前に表示しておく
VB6.0 SP5 で クリスタルレポートの帳票を 作っています。 今、プレビュー画面が開いているFormのうしろに回り込んでしまうという現象が起きていて、これを防ぎたいのですが、どなたか良い方法を知りませんでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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を勉強すればすぐに分かりますね。 ただ使うだけならこれで十分です。
その他の回答 (2)
- Futosi
- ベストアンサー率46% (23/50)
補足です。 下のURLのものでよかったら参考にしてください。 クリレポのプレビュー画面のハンドルも分からないようですね。 触ったことがないのでよく分かりませんが、クリレポのプレビューを 呼び出す処理を教えて頂ければ、ハンドルの取得方法を探してみますよ。 呼び出す処理に必要なもの ●使用しているコンポーネント (Crystal Analysis Common Controls 1.0を呼び出したら6つのオブジェクトが 出てきたのですが、どれを使用したらプレビューが出るか) ●そのコンポーネントで最低限の(簡単な)プレビューを表示する方法
- mfuku
- ベストアンサー率50% (173/345)
プレビュー画面を表示したあとに、 プレビュー画面のフォーム名.SetFocus あるいは プレビュー画面のフォーム名.ZOrder 0 とすればOKです。 例) frmPreview.Show frmPreview.Setfocus
補足
回答ありがとうございます。 プレビュー画面のフォーム名が分からないのですが・・? VBのフォームではなく、クリスタルレポート自身の プレビュー画面なのですが、その場合フォーム名は 何になるのでしょう? また プレビュー画面のフォーム名.SetFocus あるいは プレビュー画面のフォーム名.ZOrder 0 は、どこに記述すればよいのでしょうか?
お礼
丁寧な回答ありがとうございます! 早速、試してみます!