資料視窗橫向滾動時用PB鎖定某列
1.
再談"資料視窗橫向滾動時用PB鎖定某列"
--------------------------------------------------------------------------------
重慶大學計算機係資料知識工程研究室 (400044) 張洪偉
--------------------------------------------------------------------------------
重慶大學計算機係資料知識工程研究室 (400044) 張洪偉
一、問題的提出
貴報1997年第39期H23版《資料視窗橫向滾動時用PB鎖定某列》一文講述了實現資料窗
口橫向滾動時鎖定某列的一種方法,具有較好的實用效果,但是這種方法也有一定的缺點。第
一,用該方法鎖定的列是由程式預先決定的,也即是"靜"態的,在程式執行時無法改變。這樣
,當使用者需要在不同時刻鎖定不同的列時,便無法實施。第二,該方法是用程式實現的,包含了
比較複雜的工作。通過仔細實驗,筆者發現了兩種更為簡便的實現方法,可以無需程式設計或只需
簡單程式設計就可實現"動"態地鎖定某些列。
二、實現方法
假設用於顯示資料的資料視窗為dw-1。
方法一:在PowerBuilder整合環境的資料視窗畫筆(Datawindow Painter)中建立一資料
視窗控制元件dw-1,將滑鼠移到該控制元件上,單擊滑鼠右鍵,螢幕上將出現一彈出菜 單,選擇選單項
Style,再從級聯選單中選中Hscroll Bar、Vscroll Bar、Hsplit Scrolling三項,這樣即可
完成所要求的功能。
執行應用時,資料視窗dw-1的橫向滾動條最左邊有一小空隙,將滑鼠移到該處,按住左鍵
不放,資料視窗中將有一"豎線"將資料視窗水平地一分為二,然後拖動滑鼠移動該"豎線"至所
需位置,資料視窗就被劃分為兩個貌似獨立的並列的資料顯示區域,從外觀上看,一個資料窗
口變成了與原資料視窗一樣的兩個資料顯示區域。當點按一個區域的橫向滾動條時,另一區
域的資料顯示保持不動;當點按任一區域的豎向滾動條時,兩個區域的顯示同步滾動。這樣用
戶便可將需鎖定的列(一列或多列)置於一個區域,而另一區域作橫向滾動,並且在程式執行過
程中使用者可隨意調節所需鎖定的列。
方法二:通過簡單程式設計也可實現上述效果,而且可以動態地禁止或允許這種效果。在Poe
rbuilder中,資料視窗有一屬性HsplitScroll,用於決定是否將一個資料視窗一分為二來顯示
資料。當它為TURE時,允許此功能;當它為FALSE時,禁止此功能。所以,當要允許此項鎖定功
能時,只需書寫一句dw-1.HsplitScroll=TRUE即可;當要禁止此項功能時,只需書寫一句d-1.
HsplitScroll=FALSE即可,實現起來非常簡便。
三、小結
上述兩種方法,克服了原文的兩個缺點,可動態按需鎖定相應列,實現起來非常靈活、簡
單,使用者操作起來也更方便。
2.
鎖定某一列實現同Excel中的樣式
在Excel中,當列很多時,我們移動當前行到最後一項時,第一列就看不到了,那麼我們可以將第一列或者第一行的值鎖定,這樣,不管有多少行或者多少列我們都可以看到,以確保資料的準確性.這樣我們在pb中也很容易做到.具體程式碼如下:
//鎖定的列為ID,資料視窗為dw_master
dw_master.HSplitScroll = True
dw_master.Object.DataWindow.HorizontalScrollSplit = dw_master.object.id.Width
dw_master.Object.DataWindow.HorizontalScrollPosition2 = dw_master.object.id.Width
在Excel中,當列很多時,我們移動當前行到最後一項時,第一列就看不到了,那麼我們可以將第一列或者第一行的值鎖定,這樣,不管有多少行或者多少列我們都可以看到,以確保資料的準確性.這樣我們在pb中也很容易做到.具體程式碼如下:
//鎖定的列為ID,資料視窗為dw_master
dw_master.HSplitScroll = True
dw_master.Object.DataWindow.HorizontalScrollSplit = dw_master.object.id.Width
dw_master.Object.DataWindow.HorizontalScrollPosition2 = dw_master.object.id.Width
3.
在資料視窗的constructor事件裡寫:
dw_1.Object.DataWindow.HorizontalScrollSplit=integer(dw_1.describe("#1.width"))
在資料視窗的scrollhorizontal事件裡寫:
int i
if pane = 1 then
i = integer(this.OBJECT.datawindow.horizontalscrollposition2)
if i < 1 or isnull(i) then return
if scrollpos > 0 then
this.OBJECT.datawindow.horizontalScrollPosition = 0
end if
else
i = integer(this.Object.DataWindow.HorizontalScrollSplit)
if i < 1 or isnull(i) then return
if i > scrollpos then
this.OBJECT.datawindow.horizontalScrollPosition2 = i
end if
end if
dw_1.Object.DataWindow.HorizontalScrollSplit=integer(dw_1.describe("#1.width"))
在資料視窗的scrollhorizontal事件裡寫:
int i
if pane = 1 then
i = integer(this.OBJECT.datawindow.horizontalscrollposition2)
if i < 1 or isnull(i) then return
if scrollpos > 0 then
this.OBJECT.datawindow.horizontalScrollPosition = 0
end if
else
i = integer(this.Object.DataWindow.HorizontalScrollSplit)
if i < 1 or isnull(i) then return
if i > scrollpos then
this.OBJECT.datawindow.horizontalScrollPosition2 = i
end if
end if
相關文章
- pb9 資料視窗的計算列
- pb資料視窗型別型別
- 【PB】動態新增資料視窗列中下拉選單的內容
- 縱向控制的橫向滾動
- bootstrap table 橫向滾動條boot
- jQuery內容橫向拖拽滾動jQuery
- 論移動裝置內容的橫向滾動和豎向滾動
- pb9 資料視窗內按鈕用法
- PB資料視窗難得一見的技巧
- 利用oracle job定時向某個表插入資料Oracle
- 兩種方式實現橫向滾動條
- JavaScript圖片橫向無縫滾動詳解JavaScript
- pb資料視窗saveas成xml的時候返回-1的問題處理XML
- 直播系統原始碼,圖片一直滾動,迴圈滾動,豎向和橫向原始碼
- 三叉戟之橫向自定義滾動
- js文字橫向無縫滾動程式碼例項JS
- iOS Swift UICollectionView橫向分頁滾動,cell左右排版iOSSwiftUIView
- 資料夾橫向排版
- 一種區域性固定表頭的實現方案(橫向可跟隨內容一同滾動,縱向鎖定表頭)
- 如何讓 fixed 定位的導航條可橫向滾動?
- 影片直播app原始碼,純css實現橫向滾動APP原始碼CSS
- 一行程式碼實現滑鼠橫向滾動💪行程
- PB關於資料視窗內欄位值改變問題
- 用DECODE和CASE WHEN將多行單列資料改為單行多列資料(即豎向排列改為橫向排列)
- vim 基本操作,拷貝,貼上,刪除,行內移動,查詢與替換,多視窗,橫向豎向分屏,放大當前視窗...
- IOS橫線滾動檢視的實現---方式二iOS
- 設定谷歌瀏覽器視窗右側滾動條的樣式谷歌瀏覽器
- 移動端彈窗滾動時window窗體也一起滾動的解決辦法
- Flink的滾動視窗、會話視窗、滑動視窗及其應用會話
- web 移動端 橫向滾動的阻尼感很強,滑動不靈敏Web
- win10固定視窗大小怎麼設定_win10如何鎖定視窗大小Win10
- FAQ系列|寫新資料時某列值總是被自動修改
- PLSQL Developer中鎖定Window List視窗辦法SQLDeveloper
- Excel怎麼橫向輸入資料?Excel
- EXCEL中如何橫向輸入資料?Excel
- 在資料視窗的文字框中使用滾輪上下翻頁~~
- excel怎麼橫向自動求和 excel表格橫向求和公式Excel公式
- win10怎麼把軟體視窗設定最前 win10鎖定視窗在最前如何設定Win10