1

私は VB6 MDI アプリケーションを使用しており、ユーザーは接続先のデータベース (「アーカイブ」または「ライブ」など) を選択できます。ユーザーが「アーカイブ」データベースにアクセスしているときに、これを目立つように表示したいと思います。フォーム全体の透かしとして理想的です。すべてのコントロールは引き続き表示され、正しく機能します。印刷画面を使用するときに、この透かしを保持する必要があります。実際、印刷画面だけに透かしを入れるソリューションは問題ありません。

また、MDI 親フォームに実装できるソリューションを好むので、個々の子フォームをすべて変更する必要はありません。

これまでのところ、私は試しました。

  1. MDI の親の背景に透かしを追加し、MDI の子を半透明にします。残念ながら、MDI 子フォームを透明にすることはできないようです。MDI アプリケーション全体 (親と子) が透明になります。

  2. MDI アプリケーションを透過的にしてから、MDI 親フォームの後ろに透かしのある非子フォームを追加します (このフォームは MDI 親に合わせて移動およびサイズ変更されます)。少しかすれているように見えますが、Alt-PrintScreen は MDI ウィンドウのみをキャプチャするため、透かし効果はキャプチャされません。プリントスクリーンは大丈夫です。そのため、キーボード フックを追加して Alt-Printscreen を無効にすることを検討できます。

  3. キーボード フックを追加して PrintScreen キーの押下をトラップし、MDI アプリケーション上に透かし付きの透明なフォームを表示します。2 と同様に、Alt-PrintScreen は MDI フォームのみをキャプチャし、透かし効果は表示しません。また、このソリューションは、印刷画面出力に透かしを入れるだけです。

  4. MDI フォームに背景画像を追加します。これは他のコントロールからは見えず、フレームの多いフォームでは透かしが目立たなくなります。

フォーム ウィンドウに透かしのグラフィックを表示する適切な方法はありますか? 他のコントロールの上に透明な画像ボックスを配置しても、これらのコントロールは正しく機能しますか?

すべてのアドバイスに感謝します。

ありがとう

4

2 に答える 2

1

あなたが探している透かしの言葉遣いを除いて、透明な新しいフォームを作成します。そのフォームはコードを使用して、常に上にあり、他のフォームがその前にないようにします。MDI フォームは、このフォームを起動し、フォームがアーカイブまたはライブの透かしを表示するかどうか、およびフォームの位置を制御します。

個人的には、常にアプリケーションのタイトルまたはステータス バーを使用して、常にこの情報を表示してきました。

于 2012-11-15T20:55:51.773 に答える
0

この修正の主な理由は、「アーカイブ」システムからのレポートまたはスクリーン ショットが「ライブ」システムと混同されるのを防ぐことでした。画面に透かしを入れたかったのですが、あまりにもぎこちないようです。フォームの背景の色/画像を変更したり、タイトルに何かを追加したりするための役立つ提案は、優れたシンプルなソリューションです。

ただし、印刷物やスクリーン ショットには明確に印を付ける必要がありました。

レポートは Word/Excel オートメーションなどを使用しているため、レポートに透かしを入れるのは非常に簡単でした。そのため、「アーカイブ」データベースから印刷するときに、透明なテキスト ボックスなどを追加するだけで済みました。

「アーカイブ」と「ライブ」のスクリーン ショットを区別するのは、もう少し面倒でした。最終的には、キーボード フックを設定して、プリント スクリーン キーの押下をトラップするというアプローチに行きました。これは「アーカイブ」システムでのみ有効です。印刷画面のキーアップ イベントで、ビットマップをクリップボードからピクチャ ボックス (非表示のフォーム) にコピーします。その上に透明な透かし画像を並べて表示します。次に、ピクチャボックスの画像をクリップボードにコピーします。そのため、別のアプリケーションに貼り付けると、透かしが表示されます。うまくいくようです。もちろん、これにより、アプリケーション フォームであるかどうかにかかわらず、すべてのスクリーン ショットに透かしが入りますが、ユーザーにとっては問題ありません。

于 2012-11-22T14:34:19.063 に答える