PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
17574 | 02/06/17 18:09:48 | RE(3):PB7.0: 水平スクロールバー分割時のフォーカスについて。 By Taka |
17572 | 02/06/17 13:57:26 | RE(2):PB7.0: 水平スクロールバー分割時のフォーカスについて。 By sarada |
17571 | 02/06/17 11:07:17 | RE(1):PB7.0: 水平スクロールバー分割時のフォーカスについて。 By sarada |
17488 | 02/05/31 15:11:03 | PB7.0: 水平スクロールバー分割時のフォーカスについて。 By y_h |
カテゴリ:データウィンドウ
日付:2002年06月17日 18:09 発信者:Taka
題名:RE(3):PB7.0: 水平スクロールバー分割時のフォーカスについて。
y_hさん、saradaさん、こんばんは。
>マウスで右側をクリックすればいけるので、何か方法は必ずあると思うのですが・・・
SendMessageすれば出来るかな?と思って、テキトーにやってみたら出来ました。(笑)
ご参考にどうぞ。
// 水平分割した右側のカラムにフォーカスを当てるサンプル
// 注意:Datawindowの単位系はPixelsにしておくこと
// 設定したいカラム名,行を特定する
string col_name
long target_row
col_name = \"○○区分\"
target_row = dw_1.GetRow()
// 横方向の位置
uint spl_x, scr_x, col_x
spl_x = integer(dw_1.describe(\"Datawindow.HorizontalScrollSplit\"))
scr_x = integer(dw_1.describe(\"Datawindow.HorizontalScrollPosition2\"))
col_x = integer(dw_1.describe(col_name + \".x\"))
// 縦方向の位置
uint head_y, dtl_y, scr_y, col_y
head_y = integer(dw_1.describe(\"Datawindow.Header.Height\"))
dtl_y = integer(dw_1.describe(\"Datawindow.Detail.Height\"))
scr_y = integer(dw_1.describe(\"Datawindow.VerticalScrollPosition\"))
col_y = integer(dw_1.describe(col_name+\".y\"))
// フォーカス設定座標の算出
uint xp, yp
xp = spl_x + 4 + (col_x - scr_x)
yp = head_y + 2 + ( (dtl_y * (target_row -1)) + col_y - scr_y )
// 強制的にスクロール(横方向のみ)
if (xp <= spl_x + 4) or (xp > (UnitsToPixels(dw_1.Width,XUnitsToPixels!) - spl_x + 4)) then
dw_1.modify(\"Datawindow.HorizontalScrollPosition2=\"+string(col_x))
scr_x = integer(dw_1.describe(\"Datawindow.HorizontalScrollPosition2\"))
xp = spl_x + 4 + (col_x - scr_x)
end if
// 算出した座標を強制的にクリック
Send( Handle(dw_1), 513, 1, Long(xp,yp) ) //513:WM_LBUTTONDOWN
Send( Handle(dw_1), 514, 0, Long(xp,yp) ) //514:WM_LBUTTONUP
// フォーカス設定
dw_1.SetFocus()
(ビミョーにいい加減かも知れませんが、その辺はご容赦ください)
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows 2000
DBMS その他
Browser InternetExplorer5.X
Server SoftWare
OS Windows 2000
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.