資料視窗橫向滾動時用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
相關文章
- 縱向控制的橫向滾動
- bootstrap table 橫向滾動條boot
- Flink的滾動視窗、會話視窗、滑動視窗及其應用會話
- jQuery內容橫向拖拽滾動jQuery
- 論移動裝置內容的橫向滾動和豎向滾動
- 兩種方式實現橫向滾動條
- JavaScript圖片橫向無縫滾動詳解JavaScript
- 直播系統原始碼,圖片一直滾動,迴圈滾動,豎向和橫向原始碼
- 三叉戟之橫向自定義滾動
- 一種區域性固定表頭的實現方案(橫向可跟隨內容一同滾動,縱向鎖定表頭)
- 資料夾橫向排版
- vxe-table 秒級渲染萬級資料、極致流暢橫向虛擬滾動與縱向虛擬滾動+自適應動態行高
- 如何讓 fixed 定位的導航條可橫向滾動?
- 影片直播app原始碼,純css實現橫向滾動APP原始碼CSS
- vim 基本操作,拷貝,貼上,刪除,行內移動,查詢與替換,多視窗,橫向豎向分屏,放大當前視窗...
- 一行程式碼實現滑鼠橫向滾動💪行程
- IOS橫線滾動檢視的實現---方式二iOS
- win10固定視窗大小怎麼設定_win10如何鎖定視窗大小Win10
- web 移動端 橫向滾動的阻尼感很強,滑動不靈敏Web
- win10怎麼把軟體視窗設定最前 win10鎖定視窗在最前如何設定Win10
- Android 實現GridView的橫向滾動,實現仿京東秒殺效果AndroidView
- 直播軟體原始碼,橫向滾動 自定義底部指示器樣式原始碼
- excel怎麼橫向自動求和 excel表格橫向求和公式Excel公式
- Tensorflow 視窗時間序列資料的處理
- 監聽視窗大小改變,同時根據視窗大小修改某個元素的大小
- 短視訊直播原始碼,滾動定位,規定每次滑動時下滑多少格原始碼
- RecyclerView滾動位置,滾動速度設定View
- layui資料表格初始化時按某列進行排序UI排序
- 直播商城原始碼,vue 彈窗 慣性滾動 加速滾動原始碼Vue
- input聚焦時,滾動至可視區域
- 我一個div有橫向滾動條,如何讓他頁面一載入就讓他滾動到中間的位置
- C# 強行鎖定 第三方 外部 應用程式窗體視窗的解析度尺寸大小 禁止滑鼠拖拽改變視窗大小C#
- win10系統中怎麼禁用非活動視窗滾動功能Win10
- 滑動視窗最大值——棧與佇列佇列
- SAP ABAP 動態內表實現 ALV橫向按月份動態顯示資料
- 多視窗大小和Ticker分組的Pandas滾動平均值
- dotnet C# 建立 X11 應用時設定視窗背景顏色C#
- 父元素寬度為flex-1 的情況下,如何將子元素橫向滾動Flex
- Unity2D橫板遊戲之背景視差與無限滾動效果Unity遊戲