VisualFoxpro中表格控件设计技巧二例
- 格式:pdf
- 大小:233.88 KB
- 文档页数:2
VFP表单设计小技巧1.设计Tab键顺序.当表单中控件较多时,利用特性页来设置TabIndex特性就变得很慢了,你可以得用Shift键来设计其顺序.你可以选择”查看/Tab键次序”菜单,这时,在每个控件的左上角出现一个小方框. 按下Shift键并按顺序单击每个控件,然后单击”重新排序”按钮即可.2.把”形状”放在后面.当你希望在表单中把颜色背景放在一些控件的后面时,可简单击表单布局工具栏的”形状”按钮,并在屏幕上拖出一个长方形的外形.若要把它移到现有控件之后,可单击”格式/置后”菜单或在布局工具栏中单击”置后”图标即可.3.修理损坏的表单.VFP把每个表单集或表单保存在以扩展名为.SCX的表中.每个表单的.SCX文件都有个以.SCT为扩展名的同名备注文件.表单中的每个控件在.SCX文件中都有一个记录,若某个控件的错误很可能使整个.SCX文件打不开而不能使用,这时你不要放弃整个表单,因为只是某条记录使VFP遇到了麻烦.改正这一问题的一种方法是把表单的.SCX方件当作表打开对它进行编辑.首先对.SCX和.SCT文件进行备份,然后在命令窗口中用USE FormName.SCX 命令打开表单并用BROW命令进行浏览,在.SCX文件中打开损坏了的记录中有总是的备注型字段并改正这一总是或删除这一行.如果总是存在于方法列中,可能需要将方法代码拷贝到一个文本文件中,删除Object 备注字段中的内容,然后根据文本文件重方法即可.4.加快刷新速度.通常,当一个控件限于内存变量,数级或特性中的数据时,没有必要调用Refresh 方法来更新控件的显示.因为这样需要大量的处理程序和图形资源,影响运行速度.如果控件限于表或缓冲区中的数据以及数据变化时,确实需要刷新这些控件,你可以加入以下代码:thisform.LockScreen=.T.thisform.Refresh()thisform.LockScreen=.F.。
Visual Foxpro中如何实现对EXCEL表格的操作VFP和Excel都可以用来进行处理数据库表格,如果巧妙地将二者的优点结合起来,将会大大方便我们的工作。
比如我们可以利用VFP进行处理数据,而利用Excel的预览打印功能进行报表打印。
这就需要我们在VFP中直接来控制Excel。
下面就在开发VFP 应用项目时对Excel的控制作一下介绍:1.创建Excel对象oExcel=CREA TEOBJECT("Excel.application")2.添加新工作簿oExcel.Workbooks.add3.设置第3个工作表为激活工作表oExcel.Worksheets("sheet3").Activate4.打开指定工作簿oExcel.Workbooks.Open("c:\temp\ll.xls")5.显示Excel窗口oExcel.visible=.t.6.更改Excel标题栏oExcel.Caption="VFP应用程序调用Microsoft Excel" 7.给单元格赋值oExcel.cells(1,4).value=XM(XM为数据库字段名) 8.设置指定列的宽度(单位:字符个数)oExcel.ActiveSheet.Columns(1).ColumnWidth=5 9.设置指定行的高度(单位:磅)oExcel.ActiveSheet.Rows(1).RowHeight=1(设定行高为1磅,1磅=0.035厘米)oExcel.ActiveSheet.Rows("50:100").RowHeight=1 &&设置第50行至100行的高度10.在第18行之前插入分页符oExcel.Worksheets("Sheet1").Rows(18).PageBreak=1 11.在第4列之前删除分页符oExcel.ActiveSheet.Columns(4).PageBreak=012.指定边框线宽度(Borders参数如下)ole.ActiveSheet.Range("b3:d3").Borders(2).Weight=3 13.设置四个边框线条的类型oExcel.ActiveSheet.Range("b3:d3").Borders(2).LineSty le=1(其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)14.设置页眉oExcel.ActiveSheet.PageSetup.CenterHeader="报表1" 14.设置页眉(字体大小)oExcel.ActiveSheet.PageSetup.CenterHeader="&50报表1" &&'&'后面的50可以自定义,表示字体的大小15.设置页脚oExcel.ActiveSheet.PageSetup.CenterFooter="第&P页"15.设置页脚(字体大小)oExcel.ActiveSheet.PageSetup.CenterFooter="&28第&P页" &&'&'后面的28可以自定义,表示字体的大小16.设置页眉到顶端边距为2厘米oExcel.ActiveSheet.PageSetup.HeaderMargin=2/0.035 17.设置页脚到底边距为3厘米oExcel.ActiveSheet.PageSetup.FooterMargin=3/0.035 18.设置顶边距为2厘米oExcel.ActiveSheet.PageSetup.TopMargin=2/0.03519.设置底边距为4厘米oExcel.ActiveSheet.PageSetup.BottomMargin=4/0.035 20.设置左边距为2厘米oExcel.ActiveSheet.PageSetup.LeftMargin=2/0.03521.设置右边距为2厘米oExcel.ActiveSheet.PageSetup.RightMargin=2/0.035 22.设置页面水平居中oExcel.ActiveSheet.PageSetup.CenterHorizontally=.t.23.设置页面垂直居中oExcel.ActiveSheet.PageSetup.CenterV ertically=.t.24.设置页面纸张大小(1-窄行8 5 11 39-宽行14 11 9:A4)oExcel.ActiveSheet.PageSetup.PaperSize=125.打印单元格网线oExcel.ActiveSheet.PageSetup.PrintGridlines=.t.26.拷贝整个工作表edRange.Copy27.拷贝指定区域oExcel.ActiveSheet.Range("A1:E2").Copy28.粘贴oExcel.WorkSheet("Sheet2").Range("A1").PasteSpecial 29.在第2行之前插入一行oExcel.ActiveSheet.Rows(2).Insert30.在第2列之前插入一列oExcel.ActiveSheet.Columns(2).Insert31.设置字体oExcel.ActiveSheet.Cells(2,1)="黑体"32.设置字体大小oExcel.ActiveSheet.Cells(1,1).Font.Size=2533.设置字体为斜体oExcel.ActiveSheet.Cells(1,1).Font.Italic=.t.134.设置整列字体为粗体oExcel.ActiveSheet.Columns(1).Font.Bold=.t.35.清除单元格公式oExcel.ActiveSheet.Cells(1,4).ClearContents36.打印预览工作表oExcel.ActiveSheet.PrintPreview37.打印输出工作表oExcel.ActiveSheet.PrintOut38.mandBars(1).Controls(1).accChild(18).Exe cute &&打印(菜单序号18为Excel2003的‘打印’项)&&不同版本Excel的菜单序号可以通过以下程序取得*(需要在VFP7.0以上运行)oXls=GETOBJECT("","excel.sheet")XlApp=oXLS.APPLICA TIONXlSheet=XlApp.ActiveSheetbars=mandBars.COUNTSTR=''FOR i=1 TO barsSTR=STR+CHR(13)+ALLTRIM(STR(i))+'、'+mandBars(i).accName+'(NAME:'+xlapp.C ommandBars(i).NAME+'INDEX:'+ALLTRIM(STR(mandBars(i).IND EX))+')'bars2=mandbars(i).accChildCountFOR j=1 TO bars2TRYobj=mandbars(i).CONTROLS(j)STR=STR+CHR(13)+''+ALLTRIM(STR(j))+'、'+mandbars(i).CONTROLS(j).accname+'(ID: '+ALLTRIM(STR(mandBars(i).CONTROL S(j).ID))+')'FOR k=1 TO obj.accChildCountTRYIF NOT EMPTY(obj.CONTROLS(k).accname )STR=STR+CHR(13)+''+ALLTRIM(STR(k))+'、'+obj.CONTROLS(k).accName+' (ID:'+ ALLTRIM(STR(obj.CONTROLS(k).ID))+')'ENDIFCA TCHEXITENDTRYENDFORCA TCHEXITENDTRYENDFORW AIT WINDOWS ALLTRIM(STR(i))+' / '+ALLTRIM(STR(bars))+''+STR(i/bars*100,10,2)+'%' NOW AITENDFORSA VE TO XLS.txt ALL LIKE STRMODIFY COMMAND XLS.txtRETURN39.工作表另存为oExcel.ActiveWorkbook.SaveAs("c:\temp\22.xls")检测当前目录是否有同名的EXCEL表,如果有先删除,再另存IF !FILE(SYS(5) + CURDIR() + "result.xls")oExcel.ActiveWorkbook.SaveAs(SYS(5) + CURDIR() + "result.xls")ELSElcFileName = loExcel.GetSaveAsFilename("result", "Excel (*.xls), *.xls")IF !EMPTY(lcFileName)IF FILE(lcFileName)DELETE FILE (lcFileName)ENDIFoExcel.ActiveWorkbook.SaveAs(lcFileName)ENDIFENDIF40.放弃存盘&& 避免出现保存对话框oExcel.ActiveWorkbook.saved=.t.41.存盘oExcel.ActiveWorkbook.save42.关闭工作簿oExcel.Workbooks.close43.退出ExceloExcel.quitRELEASE oExcel &&只有释放对象变量, EXCEL进程才会完全关闭44.合并单元格oExcel.ActiveSheet.Range("A4:B5").MergeCells=.t.45.下列设置大家自己理解With crfole.ActiveSheet.PageSetup.LeftHeader = chr(13)+"左页眉"2.CenterHeader = "中页眉".RightHeader = "右页眉".LeftFooter = "左页脚".CenterFooter = "中页脚".RightFooter = "右页脚".orientation=1 &&1竖排,2横排EndWithWith crfole.Range("A4:C4").MergeCells = .t..WrapText =.f..Orientation = 0.AddIndent =.f..ShrinkToFit = .f.EndWith46.文本对齐oExcel.range("A4:c4").HorizontalAlignment =1 &&水平(1-默认、2-靠左、3-居中、4-靠右、5-填充、6=两端对齐、7=跨列居中、8=分散对齐)oExcel.range("A4:c4").V erticalAlignment =2 &&垂直(1=靠上、2=居中、3=靠下、4=两端对齐、5=分散对齐)47.拷贝整个工作表(含格式)oExcel.activesheet.cells.copy &&拷贝oExcel.sheets(1).select &&选择第一工作表oExcel.ActiveSheet.Paste &&粘贴oExcel.ActiveSheet.Cells(3,4).value && ActiveSheet 为当前的Sheet工作薄名字,Cells(3,4).value 为第3行第4列的值以上控制调用语句在中文VFP5.0企业版下运行通过,运行环境为Excel 97及中文Windows 9848. 显示某个单元格的批注内容oExcel=CREA TEOBJECT("Excel.application") oExcel.Workbooks.OPEN("d:\TEST\testa.xls") oExcel.VISIBLE=.T.?oExcel.Range("B5").Comment.Text &&显示B5单元格的批注内容oExcel.Workbooks.CLOSEoExcel.QUITRELEASE oExcel49.oExcel.ActiveSheet.PageSetup.PrintTitleRows="$1: $1" &&每页都打印行标头(每页顶部出现的单元格的行)50.保护工作表:oExcel.ActiveSheet.PROTECT('密码',.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.,.T.)51.保护工作薄oExcel.ActiveWorkbook.PROTECT('密码',.T.,.T.)第一个.T.:保护工作簿结构第二个.T.:保护工作簿窗口52.设置允许用户编辑区域oExcel.ActiveSheet.Protection.AllowEditRanges.Add("区域3",oExcel.ActiveSheet.Range("A2:D5"))53.如果不想在宏运行时被无穷无尽的提示和警告消息所困扰,就将本属性设置为.F.oExcel.DisplayAlerts = .F.如果不想在宏运行时被无穷无尽的提示和警告消息所困扰,就将本属性设置为False;这样每次出现需用户应答的消息时,Microsoft Excel 将选择默认应答。
如何在vfp中调用excel实现图、表的制作(之二)言归正传。
接下来谈谈vfp调用excel生成统计图形的问题。
初学者可能以为这会是件很难的事情,其实还是很简单的,不必担心。
你最好用一点儿数据自己先在excel中试试如何生成一个统计图:打开Excel输入一组数据,例如从A1-A5,从上往下输入100,200,150,223,152这五个数据,然后用鼠标点击A1不放拖至A5,这样就把A1-A5选中了。
接着点击’图表向导’快捷键,在’图表类型’中选择’柱形图’,’子图表类型’就选择第一个,按’下一步’,在下一窗口中的’系列产生在:’选择’列’,因为我们的数据是从上往下按列摆放的。
接着按’下一步’,进入新的窗口,在’图表标题’栏输入:各生产车间产量柱形图;在分类(X)轴栏输入:车间;在’数值(Y)轴’输入:产量。
点击’下一步’,在’图表位置’窗口选中’将图表作为其中的对象插入’,点击’完成’按钮即可看见生成的柱形图形。
我们从vfp调用excel生成图表的角度来简单了解一下excel中的一些基本概念:一.对象层次:(由高到低)Application对象:它在excel对象结构中处于顶层。
形象地说,双击Excel图表就相当于创建了一个Application对象。
↓Workbooks对象:即工作簿对象(集),启动Excel后点击’新建’或’打开’快捷键就相当于创建或打开了一个Workbook。
↓Worksheets对象:即工作表(集)。
启动Excel后工作表集会自动默认含有sheet1、sheet2和sheet3这三个工作表。
Charts对象:图表(集),与Worksheets对象同级↓Cells对象:表格(集),即我们看到的一个个格子。
Range对象:是格子的一个范围,如上面的A1-A5,与Cells对象同级二.VBA(Visual Basic Application):它是一种面向对象的程序语言,内嵌于Excel,Excel的各项功能都可以直接使用VBA进行操作。
VFP中的列表框控件(listbox)一.列表框(listbox):主要用于选择一组指定的数据,用户从列表中选取选项,然后执行所需的操作.二.列表框常用属性:见下表注1(rowsourcetype属性可指定的值):0-无,运行时使用列表框的确良additem和addlistitem方法加入1-值,将列表框的内容在设计时直接写在该属性中2-表别名:由columncount确定表中选择的字段.当用户选择列表框时,记录指针将自动移到该记录上3-sql语句:见sql部分,由执行的结果产生.4-查询文件名:见查询部分,由查询结果产生5-数组名6-字段名表:可用表别名作为字段前缀.当用户选择列表项时,记录指针将自动移到该记录上7-文件名描述框架,可包含"*"和"?"来描述在列表框中显示的文件名8-结构9-弹出式菜单,提供向后兼容.二.列表框常用的方法:见下表方法作用additem 增加列表项removeitem 移去列表项clear 移去所有列表项requery 当rowsourcetype为3和4时,根据rowsource中的最新数据重新刷新列表项三.列表框常用事件:列表框的常用事件为click(单击)事件和dbclick(双击)事件.四.例:列表框练习1.新建表单,添加一个文本框text1,三个命令按钮command1~command3,三个命令按钮的caption属性依次设为"加入","移出"和"全部移出",一个列表框list1.界面如图252.设置属性:将表单的caption属性设为"列表框练习",autocenter属性设为.T.;将列表框list1的moverbars属性设为.T.,multiselect属性设为.T.3.编写代码:●"加入"命令按钮command1的click事件:qm=thisform.text1.valueIF !empty(qm)no=.t.FOR i=1 to thisform.list1.listcountIF thisform.list1.list(i)=qm &&如果文本框中输入的内容和列表框中已存在的内容相同,则不添加no=.f.ENDIFNEXT iIF nothisform.list1.additem(qm)thisform.refreshENDIFENDIF●"移出"命令按钮command2的click事件:IF thisform.list1.listindex>0thisform.list1.removeitem(thisform.list1.listindex)ENDIF●"全部移出"按钮command3的click事件:thisform.list1.clear●列表框list1的init事件:thisform.list1.additem("杨过")thisform.list1.additem("小龙女")thisform.list1.additem("东方不败")●列表框list1的dbclick事件:mand2.click() &&调用command2("移出"按钮)的click事件代码说明:运行后,列表框中自动添加了3条记录,如图26,这是在表单的init代码中添加的;在文本框中输入任意文本,如果和列表框中的内容不同,单击"加入"按钮,该内容会加入到列表框;否则不添加;在列表框中选中一条数据,单击"移出"按钮,该数据被删除;在列表框中直接双击某条数据,则的列表框的dbclick事件中调用"移出"按钮的click事件代码,将双击的数据删除。
vfp6表单设计实例VFP (Visual FoxPro) 是一种关系数据库管理系统,由微软公司开发。
表单(Form)是 VFP 中用于创建用户界面的重要工具。
以下是一个简单的 VFP 6 表单设计的实例:1. 创建表单首先,打开 VFP 6,选择 "File" -> "New" -> "Form"。
这将打开表单设计器。
2. 添加控件在表单设计器中,你可以从工具箱(Toolbox)中拖放各种控件,如标签(Label)、文本框(TextBox)、命令按钮(CommandButton)等。
例如,你可以添加一个标签(Label)和一个文本框(TextBox),用于用户输入数据。
3. 设置属性选中控件后,可以在属性窗口(Properties Window)中设置各种属性,如名称、位置、大小、字体等。
例如,你可以设置标签的 `Caption` 属性为 "姓名",设置文本框的 `Name` 属性为 "txtName"。
4. 编写事件代码在 VFP 中,你可以为控件的特定事件编写代码。
例如,你可以为命令按钮的 `Click` 事件编写代码,以便在用户点击按钮时执行某些操作。
在代码窗口中输入以下代码:```vfpDO SomeProcedure```其中 `SomeProcedure` 是你要执行的过程的名称。
5. 保存表单最后,保存表单。
选择 "File" -> "Save As",并输入表单的名称和位置。
以上是一个简单的 VFP 表单设计实例。
你可以根据需要添加更多的控件和事件代码,以创建更复杂的用户界面。
vfp表单中表格控件使用
在VFP(Visual FoxPro)表单中使用表格控件可以方便地显示和编辑数据。
以下是在VFP表单中使用表格控件的一般步骤:
1. 打开VFP并创建新表单。
2. 在表单设计器中选择表格控件工具。
3. 在表单上绘制表格控件的大小和位置。
4. 双击表格控件,进入编辑模式。
5. 选择要显示的数据源(如数据库表或数组等)。
6. 根据需求调整表格的列数、列宽和列标题等属性。
7. 设置表格控件的其他属性,如是否可编辑、是否显示行号等。
8. 编写相关的VFP代码来处理表格控件的事件,例如在选择
行或编辑单元格时触发的事件。
9. 运行表单,查看和测试表格控件的功能。
在使用表格控件时,还可以通过编写代码来动态地添加、删除、更新和过滤表格中的数据,并对表格控件进行排序和分页等操作。
除了基本的显示和编辑数据外,VFP表格控件还可以支持更
复杂的功能,如合并单元格、显示图标或图像、设置条件格式等。
总之,使用表格控件可以方便地在VFP表单中展示和操作数据,提高用户界面的友好性和功能性。