vfp 關于combo等控件在grid中的方法

来源:百度文库 编辑:神马文学网 时间:2024/10/06 22:27:50
如何在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.RowSourceType=0
.Combo100.visible=.t.
ENDWITH
select   表名   &&此表可以是Grid的数据源也可以不是Grid的数据源
scan
This.column3.Combo100.additem(字段名)
endscan
--------------------------------------------------------------------------
在表格列中显示控件
除了在表格中显示字段数据,还可以在表格的列中嵌入控件,这样就为用户提供嵌入的文本框、复选框、下拉列表框、微调按钮和其他控件。例如,如果表中有一个逻辑字段,当运行该表单时,通过辨认复选框可以判定哪个记录值是“真”(.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   表格中显示数据来源于何处:表、别名   、查询或用户根据提示选定的表
對于combo   組件﹐如果我只想讓用戶從下接框中選一個值﹐而不想用戶自已輸入﹐應如何設定combo的屬啊﹐﹐
我試了設定combo1.readonly   =   .t.     但結果下拉式框都打不開了﹐﹐應如何設置呢   ﹖
将ComboBox的Style属性设为2