标题:对控件"容器"的理解(about "container")
只看楼主
arefeng
Rank: 2
等 级:论坛游民
帖 子:69
专家分:61
注 册:2012-5-30
结帖率:25%
已结贴  问题点数:10 回复次数:16 
对控件"容器"的理解(about "container")
在VFP9中文版中(在本论坛下载的), 想把"容器"给用上,结果令我很费解,
在帮助文件中找不到关于控件"容器"的更多的说明, 只好求助一下大家.

A.只差最后一步
  根据字面意义, 我 试图 把其它控件放在这个"容器"里, 再把这个"容器"放进其它容器性质的控件中, 过程如下:
  1.建一个表单           frm_formtest
  2.表单中放一个表格     grd_grdtest
  3.表格中建一个列       clm_clmtest
  4.列中建一个容器       cnt_containertest    (这一步你懂得怎么操作吗?哈哈)
  5.容器中放三个控件
      文本框           txt_texttest
      组合框           cmb_comboltest
      命令按钮         cmd_commandtest
      调整文本框和组合框的大小, 让文本框在左边, 组合框在右边, 让它们都能显示出来....
  我进行到第4步, 很顺利, 虽然VFP在表格的列中放控件的操作方法有点别扭, 但帮助文件中还是找得到操作提示的:)
  我想这下子爽了, 可以把表格控件Grid 玩出许多新花样了, 界面一定很惊艳 :DDDDD
  但让我头大的是, 第5步实现不了, "容器"里面怎么搞都放不进东西, 就好象它根本就不是一个"容器"

B.还真就是放不进
  我以为是表格里面的限制, 就把容器放在表单层,
  然后试图往容器里装入控件, 结果还是放不进去

C.我错在什么地方呢?
  如果我搞错了操作方法, 那这是好事, 大家帮我指正一下吧, 总之想法还是能实现的.
  如果我没搞错, 那这个"容器"控件有什么作用啊?

D.为了避免误会, 请回贴的朋友试验时注意一下属性窗口, 打开控件组合框观察, 看清楚容器和你要放进去的控件的层次关系
  我无论怎么搞, 放在容器上的控件都跟容器在同一层次是并列关系, 而没有变成包含关系.

E.这么做有意义吗?
  有啊, 这样做出来的界面可以相当漂亮, 比如我们经常做的就是往一个列里放一个组合框, 这样到了需要在这个列中输入数据时, 就不用打字了.
  但是设计时列中放进去的控件可以很多, 却只能堆叠在一起, 运行时只能看见其中的一个....
  就算是编程在运行时用代码调整这些控件的大小位置也不行.
  要是能按照我们的意愿任意布置的话...啧...
F.所以, VFP的这个"容器"到底有什么用呢? 要怎么用呢?

G.最后, 贴上联机帮助的节选内容, 它给了我希望, 却没有给我指出一条明路, 所以我的希望只好寄托在大家这里了.

***********************以下是从联机帮助里拷贝的内容**********************
Container 对象
请参阅
 全部折叠 全部展开
创建一个可包含其他对象的对象。

 
Container
 

说明
Container 对象可包含其他对象,并且允许访问被包含对象。例如,若创建了一个由两个列表框和两个命令按钮组成的容器对象,然后将 容器对象添加到一个表单中,则可在设计和运行时操作列表框和命令按钮。

有关容器对象的更多信息,以及与其他对象和控件的区别,请参阅面向对象程序设计。

搜索更多相关主题的帖子: 中文版 文本框 about 容器 
2012-06-01 18:36
arefeng
Rank: 2
等 级:论坛游民
帖 子:69
专家分:61
注 册:2012-5-30
得分:0 
这个希望有经验的朋友能给点意见,
我见了Tony的代码后, 发现容器确实是可以使用的,
比如用一个容器封装一大堆文本框

所以我也试着用代码方式实现了以下结构:

表单--表格--列--容器--文本框
                    --命令按钮

我的意图是在列中搞点花样, 如果上例成功,
则平时显示时没什么特别,
但如果列获得焦点, 进入编辑状态, 则可以在文本框旁边多出一个按钮来

但是上例中这个特别定义的列运行起来只得见一块色块, 里面封装的两个控件根本不可见
2012-06-04 00:54
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:5 

手工将TEXTBOX与COMMAND加入容器中,删除COLUMN1中的TEXTBOX,然后将容器加入原TEXTBOX的位置。

图中容器中的TEXT1尚未绑定数据源。

容器的高度等于其中控件的高度,控件的LEFT与TOP要设置为‘0’,就能正常显示了。看上图右边部分,就是调整好大小的容器。

表格中的容器用方向键只能左右移动,不能上下移动,不知什么原因。

[ 本帖最后由 sdta 于 2012-6-4 02:27 编辑 ]

坚守VFP最后的阵地
2012-06-04 01:40
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
比如我们经常做的就是往一个列里放一个组合框, 这样到了需要在这个列中输入数据时, 就不用打字了.
不放入组合框同样可以不用打字,利用TEXTBOX的功能同样可以选择输入内容(选择项不要太多,不超过10项,。。。。为什么这样,试下就知道原因了)。

但是设计时列中放进去的控件可以很多, 却只能堆叠在一起, 运行时只能看见其中的一个....
就算是编程在运行时用代码调整这些控件的大小位置也不行.
加大列的宽度或行的高度;也可以设置VISIBLE的属性达到目的。

我无论怎么搞, 放在容器上的控件都跟容器在同一层次是并列关系, 而没有变成包含关系.
鼠标右击容器,在弹出的菜单上,选择“编辑”,当看到容器周围变(绿)色时,这时才可以加入控件,否则就会发生你说的情况。


[ 本帖最后由 sdta 于 2012-6-4 02:19 编辑 ]

坚守VFP最后的阵地
2012-06-04 02:00
arefeng
Rank: 2
等 级:论坛游民
帖 子:69
专家分:61
注 册:2012-5-30
得分:0 
回复 4楼 sdta
鼠标右击容器,在弹出的菜单上,选择“编辑”,当看到容器周围变(绿)色时,这时才可以加入控件,否则就会发生你说的情况。
原来是这样...
先搞搞试验再来说下我的应用结果,
谢谢解决了一个大困惑.
2012-06-04 08:48
arefeng
Rank: 2
等 级:论坛游民
帖 子:69
专家分:61
注 册:2012-5-30
得分:0 
回复 3楼 sdta
手工将TEXTBOX与COMMAND加入容器中,删除COLUMN1中的TEXTBOX,然后将容器加入原TEXTBOX的位置
这个能讲一下操作过程吗?

我的想法是在column中先放一个空的容器, 这个在表单设计器里就能操作.
(--------跟Tony相反, 我比较追求可视化, 这样别人要维护或者改进我做的项目就相对比较轻松一些.)
再到这个容器的init事件中写代码加入其它控件,
这样感觉代码更易被维护.

跟你说的先封装控件到容器中再加入到column中应该不太一样.
不知道是否有更合理更易操作和维护的办法.
2012-06-04 09:57
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
回复 6楼 arefeng
用手工的方法将空容器加入COLUMN后,因为不好操作右键单击,添加控件到容器中失败。
用代码添加的方法,原理上应该是可以实现这种操作的,但是添加成功后,控件的事件过程代码又写在什么地方。
实际上TONY的代码方法,可以实现可视化环境下所不能实现的操作,可以为所欲为,想干什么就干什么。例如表单运行过程中,动态向表单添加控件(COMMANDBUTTOM)后,如何在这个控件的CLICK事件中写代码,就是一个头疼的事情,但TONY的代码方法就可以轻松的解决这个问题。

[ 本帖最后由 sdta 于 2012-6-4 10:26 编辑 ]

坚守VFP最后的阵地
2012-06-04 10:18
arefeng
Rank: 2
等 级:论坛游民
帖 子:69
专家分:61
注 册:2012-5-30
得分:0 

我先试试能不能贴图再讨论
2012-06-04 11:32
arefeng
Rank: 2
等 级:论坛游民
帖 子:69
专家分:61
注 册:2012-5-30
得分:0 
回复 7楼 sdta


是不是指上图的这种情况?
2012-06-04 11:36
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
是的

坚守VFP最后的阵地
2012-06-04 11:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-368414-1-1.html




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

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