プロが教える店舗&オフィスのセキュリティ対策術

VB6.0 SP5 で クリスタルレポートの帳票を
作っています。

今、プレビュー画面が開いているFormのうしろに回り込んでしまうという現象が起きていて、これを防ぎたいのですが、どなたか良い方法を知りませんでしょうか?

A 回答 (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を勉強すればすぐに分かりますね。
ただ使うだけならこれで十分です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/10/01 20:22

補足です。


下のURLのものでよかったら参考にしてください。

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

参考URL:http://www.bh.wakwak.com/~doji/topmost.zip
    • good
    • 0

プレビュー画面を表示したあとに、



プレビュー画面のフォーム名.SetFocus
あるいは
プレビュー画面のフォーム名.ZOrder 0

とすればOKです。

例)
frmPreview.Show
frmPreview.Setfocus

この回答への補足

回答ありがとうございます。
プレビュー画面のフォーム名が分からないのですが・・?

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

補足日時:2003/10/01 15:46
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!