如何在GRID中加入复选框或组合框?

来源:互联网 发布:明星 改年龄 知乎 编辑:程序博客网 时间:2024/05/15 09:09
如何在GRID中加入复选框或组合框?

*-----------------------------

方法一:

1、把GRID的列数改为>0 &&方法二不需要此项
2、右键单击GRID,编辑,在工具条中把checkbox拿到要加入复选框的列中
3、右键单击GRID,编辑,然后选择加入复选框的列。
   在属性窗口上的“数据”页面上把Grid的Colum(加入复选框的Column)的currentcontrol值改成check1,
   然后根据你的需要修改Sparse的值,来指定 CurrentControl 属性是影响列对象中的全部单元,还是仅影响列对象中的活动单元。


方法二:在Grid的INIT事件中:

WITH This.column4  
.addobject("Check1","CheckBox")  
.currentcontrol='Check1'  
.sparse=.f.
.Check1.Caption=''
.Check1.visible=.t.
ENDWITH
*******************************************************************
同理可向GRID中添加日历控件及COMBOBOX 控件等

GRID的INIT事件

WITH This.column3 
.addobject("Combo100","ComboBox")  
.currentcontrol='Combo100'  
* .sparse=.f.
.Combo100.STYLE=2
.Combo100.RowSourceType=0
.Combo100.visible=.t.
ENDWITH
select 表名 &&此表可以是Grid的数据源也可以不是Grid的数据源
scan
This.column3.Combo100.additem(字段名)
endscan



PUBLIC pcBtmc(8)
pcBtmc(1)=''
pcBtmc(2)='补贴一'
pcBtmc(3)='补贴二'
pcBtmc(4)='补贴三'
pcBtmc(5)='补贴四'
pcBtmc(6)='补贴五'
pcBtmc(7)='补贴六'
pcBtmc(8)='补贴七'
WITH THIS.COLUMN8
.ADDOBJECT('COMBOBOX1','COMBOBOX')
.CURRENTCONTROL='COMBOBOX1'
.COMBOBOX1.STYLE=2
.COMBOBOX1.ROWSOURCETYPE=5
.COMBOBOX1.ROWSOURCE='pcBtmc'
.COMBOBOX1.VISIBLE=.T.
ENDWITH









--------------------------------------------------------------------------

在表格列中显示控件
除了在表格中显示字段数据,还可以在表格的列中嵌入控件,这样就为用户提供嵌入的文本框、复选框、下拉列表框、微调按钮和其他控件。例如,如果表中有一个逻辑字段,当运行该表单时,通过辨认复选框可以判定哪个记录值是“真”(.T.) 和哪个记录值是“假”(.F.)。修改这些值只需设置或清除复选框即可。
可以在“表单设计器”中交互地向表格列中添加控件,也可以通过编写代码在运行时刻添加控件。
若要交互地在表格列中添加控件 
在表单中添加一个表格。
在“属性”窗口中,将表格的 ColumnCount 属性设置为需要的列数。 
例如,如果需要一个两列的表格则键入“2”。
在“属性”窗口的“对象”框中为控件选择父列。 
例如,要选择 Column1 来添加控件,当选择这一列时,表格的边框发生变化,表明正在编辑一个包含其中的对象。
在“表单控件”工具栏中选择所要的控件,然后单击父列。 
在“表单设计器”中,新控件不在表格列中显示,但在运行时刻会显示出来。
在“属性”窗口中,要确保该控件缩进显示在“对象”框中父列下面。 
添加到表格列中的复选框 
如果新控件是一个复选框,应将复选框的 Caption 属性设置为“ ”,并将列的 Sparse 属性设置为“假”(.F.)。
将父列的 ControlSource 属性设置为需要的表字段。 
例如,下面的演示中,列的 ControlSource 属性是文件 TESTDATA.DBC 的 products.discontinu,这个文件保存在 \Samples\VFP\DATA 目录下。
将父列的 CurrentControl 属性设置为新加入的控件。 
当运行表单时,这个控件将显示在表格列中。
在运行时刻,复选框显示在列中
提示 如果想让复选框在表格列中居中,可先创建一个容器类,将复选框添加到容器类中,并调整复选框在容器类中的位置。然后将容器类添加到表格列中,并将复选框的 ControlSource 属性设置为需要的字段。
若要在“表单设计器”中移去表格列中的控件 
在“属性”窗口的对象框中选择要移去的控件。
激活“表单设计器”。 
如果“属性”窗口可见,控件的名称将显示在“对象”框中。
按下 DELETE 键。 
也可以在代码中使用 AddObject 方法程序将控件添加到表格列中。
若要通过代码将控件添加到表格列 
请在表格的 Init 事件中,使用 AddObject 方法程序将控件添加到表格列,然后设置列的 CurrentControl 属性。 
例如,Init 事件包含了如下代码,向列中添加两个控件,并将其中一个设置为当前控件:
THIS.grcColumn1.AddObject("spnQuantity", "SPINNER")
THIS.grcColumn1.AddObject("cboQuantity", "COMBOBOX")
THIS.grcColumn1.CurrentControl = "spnQuantity"
* 下面的代码确保控件是可见的,并且显示在表格中的每一行。
THIS.grcColumn1.spnQuantity.Visible = .T.
THIS.grcColumn1.Sparse = .F.
在本例中,Column1 有三个可能的当前控件值: 
spnQuantity
cboQuantity
Text1 (默认控件) 
注释 在表格级上设置的属性并不会传到列或标头。因此,必须直接设置标头或所包含控件的属性,它们不会继承列级别的属性设置。
提示 要想在表格列中显示组合框最佳状态,请设置下列组合框属性∶
BackStyle = 0 && s-
Margin = 0
SpecialEffect = 1 && -G
BorderStyle = 0 && r
在表格中进行有条件的格式设置
表格中的特定格式能让用户更容易浏览表格记录,并找出想要的信息。如果想进行有条件的格式设置,可使用列的动态字体和颜色属性。
例如,可以将表格添加到表单中,并将 ColumnCount 属性设置为 2。将第一列的 ControlSource 属性设置为 orders.to_name,第二列的 ControlSource 属性设置为 orders.order_net。如果想用黑色的前景色显示少于 500.00 的订货总计,用红色的前景色显示大于或等于 500.00 的订货总计,可在表格的 Init 事件代码中包含下列代码:
THIS.Column2.DynamicForeColor = ;
"IIF(orders.order_net >= 500, RGB(255,0,0), RGB(0,0,0))"
常用的表格属性
下表列出了设计时刻常用的表格属性。
属性 说明 
ChildOrder 和父表的主关键字相联接的子表中的外部关键字。 
ColumnCount 列的数目。如果 ColumnCount 设置为 -1,表格将具有和表格数据源中字段数一样多的列。 
LinkMaster 显示在表格中的子记录的父表。 
RecordSource 表格中要显示的数据。 
RecordSourceType 表格中显示数据来源于何处:表、别名 、查询或用户根据提示选定的表