[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2004/08/24(Tue) 16:50
投稿者名:Yuuko
Eメール:
URL :
タイトル:
フォームやコントロールの上に文字を表示する方法。
ラベルの透過する機能を利用して 後ろの背景やボタンなどのコントロールも含む画面の上に 
文字を表示した効果を作ろうとしています。
( 自分のフォームの上だけの話です。 )

ラベルコントロールを 他のコントロールの上に表示する方法は無いものでしょうか?
過去ログを見ますとムリなような感じだったのですが・・・

別の方法として ラベルの代わりにピクチャーボックスを載せて 
その後ろの画面の画像を表示して .Printで文字を書いてやればいいか・・とも思うのですが
後ろの画面の画像を取得する方法をご存じないでしょうか?。


どうぞ よろしくお願いします。

投稿時間:2004/08/25(Wed) 00:25
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: フォームやコントロールの上に文字を表示する方法。
> 後ろの画面の画像を取得する方法をご存じないでしょうか?。

hhttp://www.alato.ne.jp/kazu-/vb/tip26.htm

でもこれでは、後ろのコントロールは操作できませんがそれでもいいのですか?

ちょっと面倒ですが、透明のフォームを作成して上に重ねて表示すればできますが。
フォームを移動したりサイズ変更するような場合は処理が面倒になります。

投稿時間:2004/08/25(Wed) 11:29
投稿者名:Yuuko
Eメール:
URL :
タイトル:
Re^2: フォームやコントロールの上に文字を表示する方法。
回答ありがとうございます。
これも 参考になりました。

ただ 後ろに居るコントロールが イメージやピクチャーコントロールとは限らないので 
画面のイメージを取りたいと思っています。


>でもこれでは、後ろのコントロールは操作できませんがそれでもいいのですか?
はい。上のピクチャーの外にあるコントロールが操作できれば かまいません。

> ちょっと面倒ですが、透明のフォームを作成して上に重ねて表示すればできますが。
> フォームを移動したりサイズ変更するような場合は処理が面倒になります。
そうですね・・
でも これだと下のフォーム全体が操作できなくなるのでは?・・。

投稿時間:2004/08/25(Wed) 12:31
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: フォームやコントロールの上に文字を表示する方法。
> でも これだと下のフォーム全体が操作できなくなるのでは?・・。

試してみましたが、上に書いた文字の上からでもコマンドボタンがクリックできますし、
テキストボックスにも入力できます。

魔界の仮面弁士さんが、VB初心者友の会に投稿されていた(今は消えています)コードを
使ってフォームを透明にして、そのフォーム上に文字を書いて、その透明フォームを
(最前面で表示して)Form2 の上に重ねて、Form2上のコントロールを操作しました。
コードは魔界の仮面弁士さんが投稿されたコードを使っているのでここで紹介する事は
できませんが、[SetLayeredWindowAttributes]をキーワードに検索するば見つかるでしょう

投稿時間:2004/08/26(Thu) 17:16
投稿者名:Yuuko
Eメール:
URL :
タイトル:
Re^4: フォームやコントロールの上に文字を表示する方法。
回答 ありがとうございます。

No7334の書き込みにあった 透過フォームを使って下記の様に表示してみましたが
透過フォーム Form2上の文字まで 透過してしまうので Form1の上に文字を書いたと言う効果を出せませんでした。

現在 No7334関連の書き込みにあった おやじさんの BitBltを使用した方法でやってみよと思い
下記のような方法を使ってみました。

    Me.Picture2.Visible = False
    DoEvents

    'Formの画像をクリップボードへ
    Clipboard.Clear
    keybd_event &H2C, 1, 0, 0
    DoEvents

    'クリップボードの画像をPicture1へ
    Me.Picture1.AutoSize = True
    Me.Picture1.AutoRedraw = True
    Me.Picture1.Picture = Clipboard.GetData

    'Picture1の任意の位置の画像を Picture2へ
    Me.Picture2.Visible = True
    Me.Picture2.AutoRedraw = False
    XX = Me.Picture2.Left
    YY = Me.Picture2.Top
    BitBlt Me.Picture2.hDC, -5, -24, Me.Picture1.ScaleWidth, Me.Picture1.ScaleHeight, Me.Picture1.hDC, XX, YY, vbSrcCopy

    'Picture2に文字を書く・・・と さもformの上に文字を書いたように見える
    Me.Picture2.CurrentX = 0
    Me.Picture2.CurrentY = 0
    Me.Picture2.FontSize = 20
    Me.Picture2.ForeColor = vbRed
    Me.Picture2.Print Date
    Me.Picture2.Print Time

    Me.Picture2.AutoRedraw = True


Form の A,B の幅の値はどうやって取れば良いのでしょうか?

       ============================= ─
      ||Form1                      ||  ←A
      ||---------------------------||─
      ||                           ||
      ||         ------------      ||
      ||        |Picture2    |     ||
      ||        |            |     ||
   ↑
      B

投稿時間:2004/08/25(Wed) 15:26
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
この掲示板のログにも
この掲示板の No.7334 にも投稿されていました。