| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 795 人关注过本帖, 2 人收藏
标题:在頁框中添加垂直滾動條的實現方法
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
似乎單用鼠標滾動也可以,不用那個滾動條,我試試看。

授人以渔,不授人以鱼。
2014-03-14 22:52
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
用鼠標滾動的實現:

程序代码:
CLEAR ALL
CLEAR
Main()
CLEAR ALL
RETURN 

PROCEDURE Main()
    LOCAL loMainForm
    loMainForm = CREATEOBJECT("_MainForm")
    WITH loMainForm
        .Caption = "可滾動容器示例程序"
        .MinWidth = 800
        .MinHeight = 600
        .MaxWidth = 2000
        .MaxHeight = 1500
        .AutoCenter = .T.
        .Show
    ENDWITH
    READ EVENTS
ENDPROC 

*-----------------------------
* 定義主窗體
*-----------------------------
DEFINE CLASS _MainForm AS Form 

    ADD OBJECT Container1 AS _Container
   
    PROCEDURE Arrange
        WITH ThisForm.Container1
            .Top = 5
            .Left = 5
            .Height = ThisForm.Height - .Top - 5
            .Width = ThisForm.Width - .Left - 5
        ENDWITH
    ENDPROC
   
    PROCEDURE Activate
        ThisForm.Arrange
    ENDPROC
   
    PROCEDURE Resize
        ThisForm.Arrange
    ENDPROC 

    PROCEDURE Destroy
        CLEAR EVENTS
    ENDPROC
   
ENDDEFINE 

*-----------------------------
* 從可滾動容器基類繼承的子類,添加實際控件,響應事件和方法在基類中
*-----------------------------
DEFINE CLASS _Container AS ContainerWithScroll

    ADD OBJECT Label1 AS Label   WITH Caption = "請用鼠標向下滾動:", Height = 25, Width = 150, Top = 10, Left = 50, Alignment = 1
    ADD OBJECT Text1  AS TextBox WITH Height = 25, Width = 200, Top = 10, Left = 200
   
    ADD OBJECT Label2 AS Label   WITH Caption = "請用鼠標向上滾動:", Height = 25, Width = 150, Top = 800, Left = 50, Alignment = 1
    ADD OBJECT Text2  AS TextBox WITH Height = 25, Width = 200, Top = 800, Left = 200

ENDDEFINE 

*-----------------------------
* 可滾動容器基類
*-----------------------------
DEFINE CLASS ContainerWithScroll AS Container
   
    PROCEDURE Init
        LOCAL lnIndex
       
        WITH This
            FOR lnIndex = 1 TO .ControlCount
                WITH .Controls(lnIndex)
                    .AddProperty("Origin_Top", .Top)
                ENDWITH
            NEXT
        ENDWITH
       
    ENDPROC
   
    PROTECTED PROCEDURE MouseWheel(tnDirection, tnShift, tnXCoord, tnYCoord)
        LOCAL lnIndex
       
        WITH This
            FOR lnIndex = 1 TO .ControlCount
                WITH .Controls(lnIndex)
                    .Top = .Top + tnDirection
                    IF .Top > .Origin_Top
                        .Top = .Origin_Top
                    ENDIF
                ENDWITH
            NEXT
        ENDWITH
       
    ENDPROC
   
ENDDEFINE


代碼編排已預留左右滾動的設計。這裡存在一個問題,就是當動態向容器添加控件的時候,必須主動執行一次Init方法,若頁面已滾動過,坐標需要調整正確。

[ 本帖最后由 TonyDeng 于 2014-3-15 13:31 编辑 ]

授人以渔,不授人以鱼。
2014-03-15 13:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
要在頁Page中使用,把這個容器置入即可。若不想多一個容器層次,則用相同方法定義一個Page類,Page和Container是一樣的性質。

授人以渔,不授人以鱼。
2014-03-15 13:49
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
可以考慮往裏添加可視元素讓用戶知道控件在滾動。

授人以渔,不授人以鱼。
2014-03-15 13:51
快速回复:在頁框中添加垂直滾動條的實現方法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030659 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved