| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 140 人关注过本帖
标题:请教动态创建grid,如何设置录入数据时,光标在最左侧?谢谢
只看楼主 加入收藏
wxzd123
Rank: 2
等 级:论坛游民
帖 子:434
专家分:96
注 册:2012-9-6
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
还是一样
昨晚 21:01
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:939
专家分:1478
注 册:2021-10-13
收藏
得分:0 
回复 11楼 wxzd123
加一句visible=.t.,添加自定义控件时,默认visible是.f.的。

我写了下面代码测试了一下,vfp9.0+win7下通过
程序代码:
** Test.prg
of = CREATEOBJECT("Form1")
of.show(1)
RETURN


DEFINE CLASS Form1 As Form
    ADD OBJECT Command1 AS CommandButton WITH top=10,left=10,height=25,caption="切换表"
    
    PROCEDURE Init
         ENDPROC
    
    PROCEDURE Command1.Click
        USE 
        IF VARTYPE(thisform.Grid1) == "O"
            thisform.RemoveObject("Grid1")
        ENDIF
        thisform.AddObject("Grid1", "_Grid")
        thisform.Grid1.Top = 40
        thisform.Grid1.Left = 10
        IF EMPTY(this.Tag)
            this.Tag = "1"
                * 相当于 use 表1
            CREATE CURSOR 表1 (f1 I, f2 I, f3 I,f4 I)
            INSERT INTO 表1 VALUES (1, 2, 3,4)
            INSERT INTO 表1 VALUES (5, 6,7,8)
            GO TOP 
            thisform.Grid1.RecordSource = "表1"
            thisform.grid1.changetextbox()
            thisform.Refresh()
        ELSE
            this.Tag = ""
                * 相当于 use 表2
            CREATE CURSOR 表2 (f1 I, f2 I, f3 I, f4 I)
            INSERT INTO 表2 VALUES (4, 5, 6,7)
            INSERT INTO 表2 VALUES (8, 9,10,11)
            GO TOP 
            thisform.Grid1.RecordSource = "表2"
            thisform.grid1.changetextbox()
            thisform.Refresh()
        ENDIF
    ENDPROC
ENDDEFINE


DEFINE CLASS _Grid AS Grid
    Visible = .T.
*    ColumnCount [color=#808080]= 3[/color]
    RecordSourceType=1

    PROCEDURE changetextbox
        FOR i=1to this.columncount
            this.Columns(i).RemoveObject("Text1")
            this.Columns(i).AddObject("Text1", "_TextBox")
            this.Columns(i).visible=.t.
        ENDFOR    
    ENDPROC
ENDDEFINE


DEFINE CLASS _TextBox AS TextBox
    Visible = .T.

    PROCEDURE KeyPress(nKeyCode, nShiftAltCtrl)
        IF nkeycode=13
            *MESSAGEBOX(this.value+1)
            *下面代码将在表格最后一行敲回车键后进入下一行
            IF RECNO()<RECCOUNT() AND thisform.grid1.activecolumn=FCOUNT()
                NODEFAULT 
                SKIP
                thisform.grid1.activatecell(RECNO(),1)
            ENDIF     
        ENDIF    
    ENDPROC

    PROCEDURE Click
        *MESSAGEBOX(this.value)
        *nposition=LEN(STR(this.value))-OCCURS(" ",STR(this.Value))
        this.SelStart=0 &&显示数字类型且表格列不够宽时,点击后会出现空白现象,拉宽列就可以显示出来了
        this.SelLength=0
        *MESSAGEBOX(STR(nposition))
        *this.Format="KTZ"
    ENDPROC
ENDDEFINE


[此贴子已经被作者于2025-7-1 22:15编辑过]

昨晚 21:17
快速回复:请教动态创建grid,如何设置录入数据时,光标在最左侧?谢谢
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.215860 second(s), 11 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved