| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2084 人关注过本帖
标题:请教:一个控制显示表格列数的问题
只看楼主 加入收藏
寻H不得
Rank: 4
等 级:业余侠客
威 望:1
帖 子:181
专家分:222
注 册:2010-10-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:16 
请教:一个控制显示表格列数的问题
各位高手:
    本人想实现以下效果,通过动态查询得到以下统计效果,遇到了结果显示问题。
 
图片附件: 游客没有浏览图片的权限,请 登录注册

当先查询出列数较多时,结果如上图,正常。
然后查询出列数较少时,多出了Header1的空栏。
先查询出列数较少时正常,后查出列数较多时多出的不显示,或者只有Header1的空栏。
图片附件: 游客没有浏览图片的权限,请 登录注册

用thisform.grid1.ColumnCount=FCOUNT() 来控制列数,可实现列数够用,但内容显示出问题。
不用这句,先多后少时,多出N多空栏,先少后多时,列数根本不显示够,用spinner控件控制列宽时,也出问题。
图片附件: 游客没有浏览图片的权限,请 登录注册

现在我只好每次先运行较多数据的查询,勉强可用,虽然不影响功能,但总是不爽,请各位老大指点一二。
另外可否实现这样的功能,就是在我得到的动态查询表格中,双击或单击,获取它的表头和行首值,进而构建另一个查询。
简单说如在图3的(1,5)单元格中双击,可以查出这个数值3的来历,也就是在数据库中查出符合这两个条件的记录??要构建这个查询,语句要写在哪??


[ 本帖最后由 寻H不得 于 2011-8-2 21:05 编辑 ]
搜索更多相关主题的帖子: 查询 动态 
2011-08-02 21:04
寻H不得
Rank: 4
等 级:业余侠客
威 望:1
帖 子:181
专家分:222
注 册:2010-10-9
收藏
得分:0 
这个相关的内容 我头都查晕了 好像也没看到有用的贴子,
我用的可是VFP9.0的版本,什么第N列锁定,分色显示等都没问题的。
什么原因呢,别人没遇到过么?
2011-08-02 21:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
有现成的示例,你又说人绕,宣称看不懂,但要用到。源代码都出了,不再啰嗦,愿意啃就啃,不愿意就再等。

授人以渔,不授人以鱼。
2011-08-02 21:40
寻H不得
Rank: 4
等 级:业余侠客
威 望:1
帖 子:181
专家分:222
注 册:2010-10-9
收藏
得分:0 
回复 3楼 TonyDeng
TonyDeng先生好记仇啊,上回你的源代码我是看了,运行过关,但感觉代码是有些绕的,你的程序中同样和我开始一样用了locate for语句的,而且你的变量代码确实很专业,和我的习惯不符,看起来那确实感觉是绕的,没有乱说啊。
我最后用的可是构建一句查询语句  sele sum(iif()) as 种类1,sum(iif()) as 种类2,... where . group by . 和你的思路是不一样的

其实这个题就是做上次那个题的遇到的小故障,你可以看上图实现操作时就是选择两列,就可以得到动态结果了,自我感觉设计是成功的。本来想在移植你的程序,但是有几个细节我改不过关,还正在研究中。
呵呵 大侠嘛就不要太傲了吧,
作为VFP爱好者而不是专业者,我的积极性可是经不起严重打击
2011-08-02 22:12
sywzs
Rank: 10Rank: 10Rank: 10
来 自:辽宁
等 级:贵宾
威 望:15
帖 子:508
专家分:1725
注 册:2009-5-13
收藏
得分:5 
每查询一次给表格重新赋数据源。
收到的鲜花
  • TonyDeng2011-08-03 11:43 送鲜花  10朵   附言:我很赞同
2011-08-03 05:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
相同性质的问题,我两次给出了源代码,一次是直接生成Grid控件,一次是直接生成数据表文件。
关键在思路,要点如下:
1.动态生成的数据,对应的控件也必然是动态的,正如6楼所言,动态重新绑定数据源;
2.Grid控件的Column数目,由ColumnCount属性控制,既可以AddColumn(),也可以DeleteColumn(),这都是动态手段,而数据源ControlSource更是可以改变的。
3.对一个已经实例化的控件,如果不删掉它重新生成,为防之前的属性影响后面的行为,可以通过ResetToDefault()方法重置到原始状态,再赋予新配置。

授人以渔,不授人以鱼。
2011-08-03 11:52
寻H不得
Rank: 4
等 级:业余侠客
威 望:1
帖 子:181
专家分:222
注 册:2010-10-9
收藏
得分:0 
回复 6楼 TonyDeng
可是问题还没解决
确定按钮的click事件
WITH thisform
 .grid1.RecordSource=NUll
 .grid1.ResetToDefault  && 这句如何处理有效呢 用前面这句和用.grid1.ResetToDefault()系统都提示参数太少,括号内填写什么东西呢,试过几个属性都填起没用的

do 数据查询程序..    &&&这个过程没有问题

   .grid1.RecordSource='_J1' &&&这个_J1通过查询得到的临时表,每次查询这个表列数产生变化,但显示出来就不爽了
*  .grid1.ColumnCount=-1     &&&这个控制也不行
*  .ColumnCount=FCOUNT()     &&&这个控制也不行
   .grid1.Refresh
ENDWITH
给详细支个招啊
另外一个生成Grid的程序在哪儿呢?
还有上次你发的源程序和我用的 sele '变量' as 字段变量 from ..into curs .. 都有一个问题 有些数据不能作为字段的 比如表内数据“51号玉米” 就不能产生动态字段,我重新再写过了,我的目的是写一个通用程序的。
2011-08-03 19:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
那是你的字段命名不合理,字段本身就是变量名,谁教你变量名可以用数字开头的?

RecordSource和ResetToDefault()的用法,查帮助就知道了,RecordSource哪有Null的。通用,当然是通用的,另一个例子在lyxc34问过的例子中,那里根本就没理会他数据库中字段叫什么名字。

授人以渔,不授人以鱼。
2011-08-03 20:18
寻H不得
Rank: 4
等 级:业余侠客
威 望:1
帖 子:181
专家分:222
注 册:2010-10-9
收藏
得分:0 
回复 8楼 TonyDeng
字段名不是我想的 用户输入有数据“502胶水”,“920农药”,“555胶囊”...
要得到如下结果:
 单位   520胶水   920药  伸缩棍
 东山    3        1        1
 西山    1        2        1
 ..
构建字段是有问题的

关于ResetToDefault 方法  帮助文档内容如下:
恢复属性,事件,或方法到它的 Visual FoxPro 默认设置。运行时和设计时可用。
 [Form.]Object.ResetToDefault(cPropertyName | cEventName | cMethodName)
 
返回值
cPropertyName
指定要重置为 Visual FoxPro 默认设置的属性名称。
cEventName
指定要重置的事件名称。事件中所有用户定义的代码将被删除。
cMethodName
指定要重置的方法名称。方法中所有用户定义的代码将被删除。
 
说明
应用于:CheckBox | Collection 类 | Column | ComboBox | CommandButton | CommandGroup | Container 对象 | Control 对象 | Cursor | CursorAdapter 类 | Custom | DataEnvironment | EditBox | Exception 类 | Form | FormSet | Grid 控件 | Header | Image | Label | Line | ListBox | OLE 绑定控件 | OLE 容器控件 | OptionButton | OptionGroup | Page | PageFrame | ProjectHook 对象 | Relation | ReportListener 对象 | _SCREEN 系统内存变量 | Shape | Session 对象 | Spinner | TextBox | Timer | ToolBar

ResetToDefault 返回一个属性,代表它首次被创建时的设置值。例如,如果你修改了一个命令按钮的字体,为 Caption 调用这个方法会将字体重置为它的默认值(Arial)。
ResetToDefault 从一个事件或方法中清除所有设计时的用户定义代码。
ResetToDefault 对成员数组无效,因为在一个类中没有默认值。
ResetToDefault 不能应用于 Access/Assign 方法,因为它们与相关的属性有紧密联系并且与常规方法的处理方式也不同。

但没有示例
我以前也没用过,帮助文档内容是不是不全,请教当如何处理?
2011-08-03 20:38
寻H不得
Rank: 4
等 级:业余侠客
威 望:1
帖 子:181
专家分:222
注 册:2010-10-9
收藏
得分:0 
RecordSource值用NULL没出问题啊 当然用""也没出问题
2011-08-03 20:39
快速回复:请教:一个控制显示表格列数的问题
数据加载中...
 
   



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

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