2011年05月30日

データウィンドウを水平スクロールバー分割可能にしている場合、左右に分割されますが、スクリプトにより、Setrow,Setcolumn,Setfocusをおこなうときに左側、右側と指定できないでしょうか?

お問合せ内容

データウィンドウを水平スクロールバー分割可能にしている場合、左右に分割されますが、スクリプトにより、Setrow,Setcolumn,Setfocusをおこなうときに左側、右側と指定できないでしょうか?

現在はカーソルのある側に反転表示してしまいます。 これをスクリプトにより、強制的に右側か左側かを指定したい。

回答

[対処]

PowerBuilderの仕様上そのような動作を、スクリプトで制御することはできません。

ただし、次ページのような方法で、ご希望のデータウィンドウの動作によく似たデータウィンドウを作成することができます。

手順

1. 1つのデータウィンドウ オブジェクトを1つのウィンドウに同じ高さでならべて2つ配置します。この時、右側に配置したデータウィンドウ コントロールのみに垂直スクロール バーを付けます。(ここでは左のウィンドウがdw_1で右のウィンドウがdw_2とします)

2. ウィンドウのOpenのスクリプトでデータを共有します。

    dw_1.settransobject(sqlca)
    dw_1.retrieve()
    dw_1.sharedata(dw_2)

3. 右側のデータウィンドウ コントロールのScrollVerticalイベントに以下のようなスクリプトを記述します。

    string spos1,modstring
    spos1 = dw_2.object.datawindow.verticalscrollposition
    modstring = ""DataWindow.VerticalScrollPosition="" + spos1
    dw_1.modify(modstring)

これにより、左右のウィンドウが同期して縦スクロールするようになります。

4. コントロール名を指定してSetrow, Setcolumn, Setfocus関数を記述します。

製品: