注册 登录
编程论坛 VFP论坛

使用程序创建带表格的表单时如何控制表格的列数

vfp程序员 发布于 2022-07-18 05:03, 1445 次点击
一数据表的字段数超过6,我只想在表单中显示6个字段,但程序会出现表格中的表头显示为“header1”的问题,程序如下:
DEFINE CLASS mygrid as Grid
       top=5
       left=5
       height=376
       width=985
       recordsourcetype=1
       recordsource="doc_name"
       ReadOnly=.T.
       name="grid1"
       *!*          ColumnCount = 6 &&增加此命令后会失去表格头名,显示出“header1”
ENDDEFINE
9 回复
#2
吹水佬2022-07-18 08:49
grid 的 init 可以动态设置column和header


#3
csyx2022-07-18 10:09
指定列数不该放在类定义里面,应该在用NewObject或CreateObject实例化表格对象后,再指定表格的ColumnCount = 6


[此贴子已经被作者于2022-7-18 10:13编辑过]

#4
mywisdom882022-07-18 10:22
我刚才测试一下,
对象生成后,
thisform.grid1.recordsourcetype=1
thisform.grid1.recordsource="doc_name"
thisform.grid1.ColumnCount=6
这样,显示的标题是字段名称,但下面的,就不同了,显示的是header1
thisform.grid1.ColumnCount=6
thisform.grid1.recordsourcetype=1
thisform.grid1.recordsource="doc_name"

#5
vfp程序员2022-07-18 12:52
只有本站会员才能查看附件,请 登录

程序代码如下:
form1=CREATEOBJECT("myform")&&实例化表单
form1.show()
READ EVENTS
DEFINE CLASS myform as Form
       Top=0
       Left=0
       Height=600
       Width=1024
       DoCreate = .T.
       AutoCenter = .T.
       Picture =''
       BorderStyle = 0
       Caption = "加油站安全评价变量编辑"
       MaxButton = .F.
       MinButton = .F.
       Icon =''
       WindowType = 1
       BackColor =RGB( 255,255,255)
       Name="form1"
       DataEnvironment="" &&dataenvironment 是表单的一个属性
      
       ADD OBJECT "grid1" as mygrid &&在表单中添加表格对象
       PROCEDURE load
           thisform.dataenvironment=CREATEOBJECT("data1")&&实例化Dataenvironment
           thisform.dataenvironment.opentables &&打开表
       ENDPROC
      
       PROCEDURE destroy
           thisform.dataenvironment.closetables &&关闭表
       ENDPROC
      
       PROCEDURE load
           thisform.dataenvironment=CREATEOBJECT("data1")&&实例化Dataenvironment
           thisform.dataenvironment.opentables &&打开表
       ENDPROC
ENDDEFINE

DEFINE CLASS data1 as DataEnvironment &&数据环境类
       name="dataenvironment"
       ADD OBJECT "cursor1" as mycursor &&为数据环境中添加临时表
ENDDEFINE

DEFINE CLASS mycursor as Cursor &&添加Cursor类对象
       alias= "doc_name"
       cursorsource='doc_name.dbf'  &&指向的表
       name="cursor1"
ENDDEFINE      

DEFINE CLASS mygrid as Grid
       top=5
       left=5
       height=376
       width=985
       recordsourcetype=1
       recordsource="doc_name"
       ColumnCount = 6 &&增加此命令后会失去表格头名
       ReadOnly=.T.
       name="grid1"
ENDDEFINE

#6
vfp程序员2022-07-18 12:56
没有加入列数限制语句时创建的表单如下
只有本站会员才能查看附件,请 登录
#7
mywisdom882022-07-18 13:54
以下是引用vfp程序员在2022-7-18 12:52:42的发言:


程序代码如下:
form1=CREATEOBJECT("myform")&&实例化表单
form1.show()
READ EVENTS
DEFINE CLASS myform as Form
       Top=0
       Left=0
       Height=600
       Width=1024
       DoCreate = .T.
       AutoCenter = .T.
       Picture =''
       BorderStyle = 0
       Caption = "加油站安全评价变量编辑"
       MaxButton = .F.
       MinButton = .F.
       Icon =''
       WindowType = 1
       BackColor =RGB( 255,255,255)
       Name="form1"
       DataEnvironment="" &&dataenvironment 是表单的一个属性
      
       ADD OBJECT "grid1" as mygrid &&在表单中添加表格对象
       PROCEDURE load
           thisform.dataenvironment=CREATEOBJECT("data1")&&实例化Dataenvironment
           thisform.dataenvironment.opentables &&打开表
       ENDPROC
      
       PROCEDURE destroy
           thisform.dataenvironment.closetables &&关闭表
       ENDPROC
      
       PROCEDURE load
           thisform.dataenvironment=CREATEOBJECT("data1")&&实例化Dataenvironment
           thisform.dataenvironment.opentables &&打开表
       ENDPROC
ENDDEFINE

DEFINE CLASS data1 as DataEnvironment &&数据环境类
       name="dataenvironment"
       ADD OBJECT "cursor1" as mycursor &&为数据环境中添加临时表
ENDDEFINE

DEFINE CLASS mycursor as Cursor &&添加Cursor类对象
       alias= "doc_name"
       cursorsource='doc_name.dbf'  &&指向的表
       name="cursor1"
ENDDEFINE      

DEFINE CLASS mygrid as Grid
       top=5
       left=5
       height=376
       width=985
       recordsourcetype=1
       recordsource="doc_name"
       ColumnCount = 6 &&增加此命令后会失去表格头名
       ReadOnly=.T.
       name="grid1"
ENDDEFINE

改在这里

DEFINE CLASS mygrid as Grid
       top=5
       left=5
       height=376
       width=985
       recordsourcetype=1
       recordsource="doc_name"
*      ColumnCount = 6 &&增加此命令后会失去表格头名
       ReadOnly=.T.
       name="grid1"
   PROCEDURE INIT
       THIS.ColumnCount = 6 &&增加此命令后会失去表格头名
   ENDPROC
ENDDEFINE
#8
吹水佬2022-07-18 16:27
2楼就说过,可能没测试
#9
vfp程序员2022-07-18 18:50
感谢德艺双馨的版主,问题已解决!
#10
laowan0012022-08-13 08:54
管理员,帖子的时间好像出问题了
1