[リストへもどる]
一括表示

投稿時間:2004/01/16(Fri) 20:58
投稿者名:Fuji
Eメール:
URL :
タイトル:
2つのテキストボックス、行の同期
テキストボックス×2の個々の行データを対比させるように
縦型スクロールバー1個で制御したいのですが、そんなことはできますか?

リストボックスにはTOPINDEXプロパティや、
行(アイテム)を変更したときのイベントがあるのでできたのですが・・・。

<例>
|TEXT1   |TEXT2   |
|--------|--------|
|AAA     |AAA     |
|BBB     |BBB     |
|--------|--------|

TEXT1で[BBB]の次の行を表示させると
同様に、TEXT2でも次の行が表示される

|TEXT1   |TEXT2   |
|--------|--------|
|BBB     |BBB     |
|BBC     |CCC     |
|--------|--------|

投稿時間:2004/01/16(Fri) 21:14
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 2つのテキストボックス、行の同期
OSによって操作が変わりますが、WinXP系でしょうか?Win98系でしょうか?
どこかの掲示板で投稿した覚えがあるので探して見ます。

WindowsXP 用でしたら、ここの掲示板の No.6564 をご覧下さい。

投稿時間:2004/01/17(Sat) 16:18
投稿者名:Fuji
Eメール:
URL :
タイトル:
Re^2: 2つのテキストボックス、行の同期
申し訳ないですが、XPではありません。

<<開発環境>>
OS:Win2000SP4 VB:VB6SP5

花ちゃんさんから教えていただいた、掲示板を参考に
いろいろとやってみたいと思います。
ご返事ありがとうございました。

投稿時間:2004/01/17(Sat) 18:01
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: 2つのテキストボックス、行の同期
> 申し訳ないですが、XPではありません。
> OS:Win2000SP4 VB:VB6SP5

なら、WindowsXP用で問題ないかと思いますので、サンプルを試して見て下さい。

投稿時間:2004/01/20(Tue) 18:31
投稿者名:Fuji
Eメール:
URL :
タイトル:
Re^4: 2つのテキストボックス、行の同期(ScrollBar)
返答、遅れましてすみませんでした。
Windows2000での動作確認がとれました。

GotFocusでフォーカスのあるテキストボックスを取得し、
TEXTAでもTEXTBでも同期を取れるようにしました。

*************************

基本的な動作は問題ないのですが、
縦のスクロールバーをONにし、
スクロールバーをドラッグし、スクロールさせた時に
GotFocusイベントが発生しない為、うまく同期できない時があります。

本題とは少しずれてしまいますが、
テキストのスクロールバーでのイベントの取得方法があるでしょうか?

投稿時間:2004/01/20(Tue) 19:18
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: 2つのテキストボックス、行の同期(ScrollBar)
どちらからでも同期を取りたいなら、Top位置を監視して、先にTop位置が移動した方に同期を
とればいいのでは。

> テキストのスクロールバーでのイベントの取得方法があるでしょうか?

あれば、それで取得しているかと、無いから上記の方法を取っているのかと。

投稿時間:2004/01/31(Sat) 20:26
投稿者名:Fuji
Eメール:
URL :
タイトル:
Re^6: 2つのテキストボックス、行の同期(ScrollBar)
すみません、Top位置の取得方法なのですが、
いろいろやってみたのですが、うまく取得できません。

No.6564 のサンプルを少し改造すれば、TOP位置を取得できるようになるのでしょうか?

ヒントだけでもかまいませんので、教えていただけないでしょうか?

投稿時間:2004/01/31(Sat) 20:45
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^7: 2つのテキストボックス、行の同期(ScrollBar)
> すみません、Top位置の取得方法なのですが、
> いろいろやってみたのですが、うまく取得できません。

Private Sub Timer1_Timer()
    Dim udtPoint  As tagPOINT, Ret As Long
    Ret = SendMessage(RichTextBox1.hwnd, EM_GETSCROLLPOS, 0&, udtPoint)
    Ret = SendMessage(RichTextBox2.hwnd, EM_SETSCROLLPOS, 0&, udtPoint)
End Sub

RichTextBox1 のTop位置を取得して、そののTop位置を RichTextBox2 に設定しています。

    Ret = SendMessage(RichTextBox1.hwnd, EM_GETSCROLLPOS, 0&, udtPoint1)
    Ret = SendMessage(RichTextBox2.hwnd, EM_GETSCROLLPOS, 0&, udtPoint2)
これで前回調べた時の位置と同じか調べて違っていたら、違っていない方にその位置を
設定すればいいのでは