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

投稿時間:2005/04/20(Wed) 09:59
投稿者名:にまーる
Eメール:
URL :
タイトル:
ピクチャボックスへの文字表示
お世話になります。

PictureBoxへのPrintメソッドに関しての質問です。

テキストファイル内の文字列を取得し、Printメソッドで
表示しているのですが、ファイル内の文字列が多いと
全て綺麗に表示されません。

タイマーイベントでPictureBoxを少しずつ上に移動させ、
文字列を全て表示するものを作成しています。
AutoRedrawをTrueにしています。
AutoRedrawがFalseの場合は、PictureBoxには、
綺麗に反映されるのですが、再描画ができていない状態です。

何か良い方法はありますでしょうか。

主な処理のソースは、以下です。

With Picture1
    .BackColor = lngBackRGB
    .ForeColor = lngTextRGB
    .Height = .TextHeight(strText)
    .Width = .TextWidth(strText)
    
    .Cls
    Picture1.Print strText
End With

タイマーイベント内では、
Picture1.Top = Picture1.Top - 10


よろしくお願いします。

投稿時間:2005/04/20(Wed) 10:26
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: ピクチャボックスへの文字表示
> 表示しているのですが、ファイル内の文字列が多いと
> 全て綺麗に表示されません。

どう綺麗に表示されないのでしょうか?
(多分タイマーコントロールを使っての再描画によるチラツキとは思うのですが)
どのように表示される事を期待されているのですか?

投稿された文書やコードから読み取る事は、私にはできませんが?

スクロールバーを移動させなければ綺麗に表示されるのでしょうか?
タイマーコントロールのインターバルの設定を変更しても効果は変わらないのでしょうか?
Picture1.ClipControls = False に設定しても同じですか?
もう少し詳しい状況か事象を再現できるコードを投稿して頂かないと判断できないのでは。

投稿時間:2005/04/20(Wed) 10:50
投稿者名:にまーる
Eメール:
URL :
タイトル:
Re^2: ピクチャボックスへの文字表示
お世話になります。

説明不足ですみません。

簡単なコードしては、
FormにPictureBoxとCommandButton(2つ)を貼り付けます。
PictureBoxのプロパティとコードは以下です。

FontName=HG創英角ゴシックUB
FontSize=23
AutoRedraw=True

Private Sub Command1_Click()
    Dim strPath As String
    Dim intFno  As Integer
    Dim strText As String

    ' テキストファイルのパス
    strPath = "C:\Sample.txt"    
    
    intFno = FreeFile
    'ファイルをシーケンシャル入力モードで開く
    Open strPath For Input As #intFno
        strText = StrConv(InputB$(LOF(intFno), intFno), vbUnicode)
    Close #intFno

    Picture1.Height = Picture1.TextHeight(strText)
    Picture1.Cls
    Picture1.Print strText
End Sub

Private Sub Command2_Click()
    Picture1.Top = Form1.Height - Picture1.Height
End Sub

Command2ボタンを押下でPictureBoxの下側が見えるのですが、
何かモザイク的な形になってしまいました。
AutoRedrawをFalseにすると普通にテキストが見れます。

全体の完成イメージは、
映画のエンドロールのようなものです。

よろしくお願いします。

投稿時間:2005/04/20(Wed) 11:01
投稿者名:藤代千尋
Eメール:
URL :
タイトル:
Re^3: ピクチャボックスへの文字表示
#2952 の私の投稿は無視してください。勘違いしました。(^^;

> 何かモザイク的な形になってしまいました。

それって文字化けのことですか? → ファイルの内容そのものを確認。

本当にモザイク上になるなら、VB の処理場考えられないので、フォントが壊れているとか、VB の未知

バグとか、そんな感じがします。(^^; 別のフォントでどうか、試してみてください。

投稿時間:2005/04/20(Wed) 11:16
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: ピクチャボックスへの文字表示
>Command2ボタンを押下でPictureBoxの下側が見えるのですが、
>何かモザイク的な形になってしまいました。

No.2953 に投稿されたコードを試した限りでは、何も問題点がありませんが?

投稿時間:2005/04/20(Wed) 11:49
投稿者名:にまーる
Eメール:
URL :
タイトル:
Re^4: ピクチャボックスへの文字表示
お世話になります。

表記したサンプルでやはり現象がおきます。
ちなみにですが、テキストファイルの行数は200行ぐらいです。
PictureBoxのFontSizeを10ぐらいにして
PictureBoxの一番下を見ると普通に文字列が表示されています。

どこかのホームページで、
コントロールのサイズが大きい場合か何かにPrintすると
おかしくなると見たような・・・。

藤代千尋さんのアドバイスにあった、テキストボックスの方向でも
できそうですが。

投稿時間:2005/04/20(Wed) 12:40
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: ピクチャボックスへの文字表示
ある一定以上はピクチャーボックスには表示しきれないからだと思うのですが
私の環境ではフォントサイズやファイルサイズが大きくなれば最後まで表示
されないだけです。
VB6.0(SP6) Windows XP(Pro SP2) Celeron CPU 2.40GHz  496MB RAM
因みに Windows98 SE のノートパソコンでも同様で貴方のような現象はおきませんでした。

多分、現在の半分のファイルサイズなら問題ないかと思うのですが。

Private Sub Command3_Click()
    Picture1.Height = Picture1.Height + 1000
    Debug.Print Picture1.Height
End Sub

変になった時は、Picture1.Height のサイズがそれ以上高くならないかと思います。

投稿時間:2005/04/20(Wed) 10:49
投稿者名:藤代千尋
Eメール:
URL :
タイトル:
Re: ピクチャボックスへの文字表示
基本的に、通常の Windows アプリでは、描画のチラツキは抑えられません。これは、プ
ログラムが画面を更新するタイミングと、Windows が実際にディスプレイに出力するタイ
ミングが一致しないためです。(v_v)
#工夫によってある程度は抑えられる。
#ゲームとかは、DirectX など使って描画を完全にコントロールするのでチラツキはない。

ファイル内容をづらづら表示したいのなら、リストボックスの方が便利ですよ。先頭行を
消して、末尾に追加するとか、簡単に出来ますから。(^^)/
#ピクチャボックスの中に入れてしまえば、スクロールバーを見せなくも出来ますし。