Microsoft flexGrid control Microsoft flexGrid control控件比较常见。

合集下载

VB名词解释

VB名词解释

《Visual Basic 知识总结》10级2、3班一、名词解释:1、对象:对象是系统中的基本运行实体。

用户用来构筑用户图形界面的每一个可视的控件均为对象。

创建用户界面时用到的对象可分为窗体对象和控件对象。

整个应用程序也是一个对象,还有一些对象不可见。

2、属性:属性是对对象特性的描述,不同的对象有不同的属性。

3、事件:事件是由Visual Basic 预先设置好的,能够被对象识别的动作。

4、方法:方法是指控制对象动作行为的方式,是对象包含的函数或过程。

5、工程:是Visual Basic 应用程序开发过程中使用的文件集。

Visual Basic工程主要由窗体模块、标准模块和类模块三部分组成。

6、窗体:就是窗口,在Visual Basic 中,窗体是用户界面的最本的模块,也是创建应用程序所使用的主要对象之一。

7、标准模块:应用程序内其他模块访问的过程和声明的容器,扩展名.BAS。

8、窗体模块:窗体模块的文件扩展名为.frm。

这类模块是Visual Basic 应用程序的基础。

窗体模块可以包含事件过程、通用过程、以及变量、常数、类型和外部过程的窗体级声明。

9、类模块:类模块的扩展名.cls。

这类模块是面向对象编程的基础。

10、常量:在程序执行过程中其值保持不变的量。

在Visual Basic 中,常量分为两种:一般常量和符号常量。

11、符号常量:是在程序中用标识符表示的一些永远不变的常数或字符串。

12、事件驱动: Visual Basic 采用事件驱动编程机制。

当发生某个事件时,就会“驱动”预先设置的一系列动作,称为“事件驱动”。

13、事件过程:针对控件或窗体的事件编写的代码,称为“事件过程”。

14、变量:在程序执行期间其值可以改变的量。

在程序运行中,系统为程序中的每一个变量分配一个存储单元,变量名实质上计算机内存单元的命名。

变量名用于识别变量在内存中的位置,变量的类型指定其占用内存空间的大小。

15、事件过程:针对窗体或窗体的事件编写的代码,称为“事件过程”。

MsFlexGrid 的使用方法

MsFlexGrid 的使用方法

MSFlexGrid控件概述1、作用:该控件以表格形式显示二维字符数组中每个单元的数据。

常用于处理复杂的二维数据表的问题。

如校历表、学生宿舍表、学生班级成绩表等。

2、添加到控件箱菜单命令:工程 | 部件,在部件对话框中选择:Microsoft FlexGrid Control 6.0 (SP6)。

3、主要属性(1)Rows与Cols属性:分别用于设置或返回MSFlexGrid控件的行数与列数。

(2)Row与Col属性:分别用于设置或返回MSFlexGrid控件中活动单元的行号与列号。

(3)TextMatrix属性:该属性用于表示MSFlexGrid控件中单元格的内容。

格式为:TextMatrix (Row, Col);其中Row与Col分别表示单元格在MSFlexGrid控件中的行号与列号。

(4)FixedRows属性:用于设置表格显示过程中固定不变的行数。

如FixedRows=1,则表示固定行为1,如图8.3中第1行。

(5)FixedCols属性:用于设置表格中固定不变的列数。

如FixedCols=1,则表示固定列为1,如图8.3中第1列。

(6)FixedColor属性:用于设置固定行与固定列的颜色。

(7)MouseRow与MouseCol属性:用于返回鼠标光标所在单元格的行号与列号。

(8) ColWidth(Col)、RowHigh(Row)属性:用于设置与返回第Col列的宽度与第Row 行的高度,例如设置第0列的宽度为1500,第0行的高度为300的赋值语句为:ColWidth(0) = 1500RowHeight(0) = 300(9)DataSource属性:用于选择数据表,只能通过Data数据源控件选择数据表。

说明,若要用ADO Data控件作为数据源,则应使用MSHFlexGrid控件。

(10)MousePointer属性:用于设置鼠标光标形状,属性取值与光标形状如表8.1所示。

【例8.1】编写程序,定义MSFlexGrid1控件为10行、5列表格,给每一个单元格赋值为Row+Col,其中Row与Col分别表示控件单元格的行号与列号。

VC++ ADO数据库 FlexGrid控件

VC++ ADO数据库 FlexGrid控件

VC++ ADO数据库 FlexGrid控件收藏耗费了一下午,研究了一下VC的数据库编程,写了这个测试程序。

主要的功能为实现access 数据库的添加与删除,同时动态的将数据库数据显示在flexgrid控件中。

下面把过程记录下来,以备后用。

一。

ADO简介ADO提供了一组非常简单,将一般通用的数据访问细节进行封装的对象。

由于ODBC数据源也提供了一般的OLE DB Privider,所以ADO不仅可以应用自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序。

关于OLE DB和ADO的其它详细情况,读者可以自行查阅相关书籍或MSDN,这里就不一一说明了。

让我们直接步入主题,如何掌握ADO 这种数据库访问技术ADO的操作方法和前面讲过的DAO的操作在很多方面存在相似之处。

二。

主要控件的布置程序运行效果如图:1.进入工程向导,建立基于对话框的mfc应用程序。

名为databasetest。

加入flexgrid控件:工程--->添加到工程------->components and controls。

找到Microsoft Flexgrid control,然后insert。

添加几个static box 和editbox,添加两个botton,实现插入和删除的功能。

2.打开access2003,建立空数据库Demo.mdb。

建立表Table1。

设置编号,时间,采样点数,累加次数,数据5个字段,分别为自动编号,时间/日期,数字,数字和备注类型如图:三。

数据库操作过程1.用#import指令引入ADO类型库要用#import语句来引用支持ADO的组件类型库(*.tlb),其中类型库可以作为可执行程序(DLL、EXE等)的一部分被定位在其自身程序中的附属资源里,如:被定位在msado15.dll 的附属资源中,只需要直接用#import引用它既可。

可以直接在Stdafx.h文件中加入下面语句来实现:#import "c:\program files\commonfiles\system\ado\msado15.dll" \no_namespace \rename ("EOF", "adoEOF")其中路径名可以根据自己系统安装的ADO支持文件的路径来自行设定。

MFC MS Flex Grid控件

MFC MS Flex Grid控件

MS Flex Grid控件是微软的一个网格控件,可以用于显示数据库中的信息,对于一些比较简单的显示方式,还是比较方便的。

加入MS Flex Grid控件控件的方法:在VC中选择Project|Add to Project|Conpenments and Controls 在弹出的对话框中选择Registered ActiveX Controls然后选择Microsoft FlexGrid Control, version 6.0。

系统会提示你加入几个类进入你的工程。

包括四个类:CMSFlexGrid,CRowCursor,COleFont,CPicture;同时在VC的Control面板上会显示出MS Flex Grid控件的图标,可以同其他普通控件一样操作这个控件。

一、引言MSFlexGrid控件是Visual C++中提供的已注册ActiveX控件,它常被用于显示和操作表格式数据,特别是数据库文件的显示及交互操作。

在其他程序的交互界面中,对于不确定数目的同类大批量数据的输入而言,MSFlexGrid是十分有效的。

利用MSFlexGrid可以将输入文件中的数据显示出来并作交互修改,通过功能扩展可将表格数据直接copy到Excel、Word及Origin中的表格内,利用右键菜单实现此功能。

本文编程实现了上述类似功能,并将MSFlexGrid控件的一些调整操作(如行高、列宽、Cell内容的对齐方式等)加以外部按钮化,使其更为方便易用。

二、先行者对MSFlexGrid控件功能的扩充王勇、李延平[1]提出在MSFlexGrid的当前网格单元(Cell)内创建同样尺寸的编辑框(CEdit)覆盖该Cell,并将Cell内的Text传给编辑框,通过此编辑框以实现MSFlexGrid的网格编辑功能。

秦胜[2]提出用信息预解释(PreTranslate)方法,截留编辑框(CEdit)内的ESC键与回车键(Enter)按下消息,以防止在编辑框内不小心按下上述两按键之一时立刻关闭对话框,退出整个程序。

MSFlexGrid表格控件详细说明

MSFlexGrid表格控件详细说明

MSFlexGrid 表格控件详细说明控件名:Microsoft FlexGrid Control文件:sys\msflxgrd.ocx============================= 属性=========================================■AllowBigSelection 属性在行头或者列头上单击时,(是否)可以使得整个行或者列都被选中。

■AllowUserResizing 属性 (是否)可以用鼠标来对 MSFlexGrid 控件中行和列的大小进行重新调整。

-------------------------------------■Appearance 属性设计时的绘图风格■BorderStyle 属性边框样式-------------------------------------■BackColorBkg 属性 '表格多余部分颜色■BackColorFixed 属性 '表格头部分颜色■BackColorSel属性 '选中部分颜色■BackColor属性 '所有未确定单元的颜色■CellBackColor 和 CellForeColor 属性返回或设置单个单元或者一群单元的背景和前景颜色。

-------------------------------------■ForeColor、ForeColorFixed 以及 ForeColorSel 属性各部分上文本的颜色。

■TextStyle 和 TextStyleFixed[= style ] 属性返回或设置指定单元或者一群单元上文本的三维样式。

----------------------------------------■FixedAlignment (index)= [value] 属性列号,设置值flexAlignLeftTop 0 左顶部flexAlignLeftCenter 1 左中flexAlignLeftBottom 2 左底部flexAlignCenterTop 3 中顶部flexAlignCenterCenter 4 中中flexAlignCenterBottom 5 中底部flexAlignRightTop 6 右顶部flexAlignRightCenter 7 右中flexAlignRightBottom 8 右底部■ColAlignment(number) 属性 [= value ] 返回或设置某一列中数据的对齐方式number=列号,或者 -1(一次性地对所有列进行设置)。

VB考试教程:用FlexGrid控件来操纵数据

VB考试教程:用FlexGrid控件来操纵数据

四、⽤FlexGrid控件来操纵数据使⽤FlexGrid ActiveX控件可以在Microsoft Visual Basic的窗体中创建⼀个电⼦数据表格,也可称之为格。

FlexGrid ActiveX控件可以在格中显⽰任何类型的表格式数据:⽂本、数字、⽇期,甚⾄图形。

但是下⾯将主要学习使⽤FlexGrid控件显⽰Microsoft Access数据库的字段和记录。

FlexGrid控件在电⼦数据表格中分别⽤⾏和列来显⽰数据库表的记录和字段。

你可以在FlexGrid对象中进⾏许多电⼦数据表格的典型操作,包括选中单元、重置列宽、对齐标题和格式化⽂本。

你可以从⽤⽂本填充简单的FlexGrid控件开始,选中⽂本、设置⼏个格式选项。

接下来,你将进⼀步深⼊到把FlexGrid控件绑定到数据库上、显⽰数据库表、对记录进⾏排序、在整个数据库中搜索⽤户定义的字符串⽂本。

1、将FlexGrid⽤作通⽤电⼦数据表格FlexGrid是Microsoft Visual Basic 专业版和企业版中包含的ActiveX控件。

在⼯程中使⽤FlexGrid控件之前,需要在Project(⼯程)菜单的Components(部件)菜单项打开的对话框中选择Microsoft FlexGrid 6.0 control(即msflxgrd.ocx),把控件添加到⼯程中的⼯具箱中。

FlexGrid控件提供了许多电⼦数据格传统的组织优点。

可以⽤它来创建货物清单、计算税款、管理帐⽬、跟踪零件列表和库存清单等等。

另外,Microsoft将FlexGrid控件设计为⼀种可绑定的控件,它可以通过在同⼀窗体上的Data控件来显⽰数据库信息。

如果你想⽤原始的表格形式迅速显⽰数据库信息,那么FlexGrid控件就是的选择。

提⽰:Visual Basic 6.0专业版还提供了⼀个被称为Hierarchical FlexGridActiveX 的同类电⼦表格控件(即mshflxgd.ocx)。

江西省县级综合业务竞赛试题(理论)DXM(1)讲解

江西省县级综合业务竞赛试题(理论)DXM(1)讲解

2004年江西省气象部门岗位技能比赛试题(县级综合业务理论部分)一、单项选择(请将正确答案的标号填在括号内,共40分,每题0.5分)1、由团块、薄片或条行云组成的云群或云层,成群或波状排列,云块个体都相当大,其视角多大于5度的云是。

()A、积云B、层积云C、高积云D、雨层云2、湿球包纱布时,包卷纱布的重叠部分不要超过球部圆周的。

()A、1/4B、1/3C、1/23、地面观测中日照以为日界。

()A、日落B、20时C、24时4、雪与毛毛雨同时下降,则天气现象栏应。

()A、记雨夹雪B、毛毛雨与雪分别记载C、只记雪D、只记毛毛雨5、定时能见度观测,四周视野中1/3范围的水平能见度为8000 米,1/3范围的水平能见度为8500米,1/3范围的水平能见度为9000米。

则水平有效能见度应记录为。

()A、8.0B、9.0C、8.5D、30.06、整理EL型风向风速自记纸时,发现915~1130期间东南/西北风向笔尖迹线中断,从实有的五次风向划线中挑取的10时、11时最多风向分别为:NNE、NE,则挑取的风向。

()A、10时和11时都正确B、10时和11时都不正确C、10时不正确,11时正确D、10时正确,11时不正确7、浓积云进一步发展,当云顶呈现时,应判断为秃积雨云。

()A、花椰菜形明显,云体高耸B、出现砧状C、出现幞状D、顶部开始冻结,形成白色毛丝般的冰晶结构8、《规范》规定:虹吸雨量计在雨季每月应将盛水器内的自然排水进行次测量,并将结果记在自记纸背面,以备使用资料时参考。

()A、1B、2C、1~2D、2次以上9、《规范》规定:湿球温度表下面的水杯杯口距湿球球部应约cm。

()A、1B、2C、3D、410、因值班员未添加墨水造成气压自记迹线815~905、925~1145中断,应统计错情个。

()A、3B、2C、0.2D、0.3E、0.011、《规范》规定:涂刷日照纸的药液,每次配量不宜过多,以能涂刷张日照纸的用量为宜。

vb中mshflexgrid和datagrid的区别

vb中mshflexgrid和datagrid的区别

vb中mshflexgrid和datagrid的区别msflexgrid 是老版本的,不能用ADOmshflexgrid是新版本的,可以用ADO,而且还能做合并单元格之类的,功能强,但非常复杂,datagrid 可以实现普通的表格,而且几乎不用编程,最简单,当然功能没有上一个强.mshflexgrid 是一个纯sheet 的表格DataGrid和另外两个控件最大的区别在于DataGrid允许用户修改数据,而另外两个不允许。

如果你要用户修改数据,你应该使用DataGrid。

如果只是显示数据,应该使用MSFlexGrid 或者MSHFlexGrid,因为这两个控件显示的选项更多,更好看。

而MSFlexGrid和MSHFlexGrid之间的区别,主要是MSHFlexGrid支持绑定ADODC控件,而MSFlexGrid只支持Data控件。

MSFlexGrid引用方法:工程->部件->Microsoft FlexGrid Control 6.0MSHFlexGrid引用方法:工程->部件->Microsoft Hierarchical FlexGrid Control 6.0MSHFlexGrid 控件的一个主要特性是它能显示层次结构记录集—以层次结构方式显示的关系表。

创建层次结构记录集的最容易的方法是使用数据环境设计器并把MSHFlexGrid 控件的DataSource 属性赋给数据环境。

您也可以用Shape 命令作为ADO Data Control 的RecordSource 在代码中创建层次结构记录,如下面的示例:' 创建ConnectionString.Dim strCn As StringstrCn = "Provider=MSDataShape.1;Data Source=Nwind;" & _"Connect Timeout=15;Data Provider=MSDASQL"' 创建Shape 命令.Dim strSh As StringstrSh = "SHAPE {SELECT * FROM `Customers`} AS Customers " & _ "APPEND ({SELECT * FROM `Orders`} AS Orders RELATE " & _ "CustomerID TO CustomerID) AS Orders"' 把ConnectionString 赋给ADO Data Control 的' ConnectionString 属性, Shape 命令以及' 控件的RecordSource 属性.With Adodc1.ConnectionString = strCn.RecordSource = strShEnd With' 把HflexGrid 控件的DataSource 属性设置到' ADO Data 控件。

VB6.0利用微软网格控件进行编辑输入

VB6.0利用微软网格控件进行编辑输入

用微软网格控件进行编辑输入Visual Basic中提供了许多标准控件和定制控件,每一个控件都可以提供一组特殊的用户界面和编程能力。

充分利用每一个控件的特性和方法,可以使编程工作更加容易、简单。

微软网格控件MSFlexGrid是个定制控件。

使用微软网格控件,可以按行列顺序显示正文、数字和图片,就象电子表格一样。

网格的高度、宽度和其它特性都可以进行调整,而且网格的行和列可以单个地或成组地进行操作。

MSFlexGrid控件对包含在内的单元内容可进行分类、合并以及格式化,并且可以与数据库控件相绑定。

MSFlexGrid控件具有50多种属性,比其它网格控件功能更强大,灵活性更强。

但是MSFlexGrid控件同其它Grid网格控件一样,用户不能编辑网格单元中的内容,在要求对其内容进行修改时,这可能是一个缺陷。

虽然可以对DBGrid控件进行编程完成编辑的功能,但其功能不如MSFlexGrid强大。

当在录入工作量比较大时,如果利用MSFlexGrid进行输入,代替Text或其它控件,从而避免了界面的反复刷新和不断地操作按钮,录入速度和效率会得以大大提高。

在应用程序中使用MSFlexGrid 之前,应先将MSFlxGrd.ocx 文件添加到工程中。

实现编辑网格单元的方案为了仅仅要求实现能够对网格单元进行输入,可以在MSFlexGrid的KeyPress事件中加入以下代码,但是修改编辑输入后的内容还十分困难。

Sub MSFLexGrid1_KeyPress(KeyAscii As Integer)MSFlexGrid1.Text=MSFlexGrid1.Text & Chr$(KeyAscii)End Sub另外一种方法是文本框和网格相结合,用户编辑操作文本框中的内容,操作完后移至网格单元中。

在这个过程中,应该实现以下几个功能:(1)文本框能准确定位,与待编辑网格单元相重合(2)平时文本框不显示,当进行编辑操作时显示(3)在输入完一行后能自动判断并加一新行(4)按回车键确认并自动到下一列(5)双击网格单元可显示文本框进行编辑(6)文本框消失后,把文本框内容移到网格单元中。

让MSflexgrid支持鼠标滚轮(VB6)

让MSflexgrid支持鼠标滚轮(VB6)

让Msflexgrid控件支持鼠标滚轮(VB6)Msflexgrid控件是使用非常广泛的一个控件。

但由于Msflexgrid控件不支持鼠标滚轮,给用户使用带来了不少使用上的不习惯。

网上就“让Msflexgrid控件支持鼠标滚轮”给出了具体的例子,实现方法主要集中于“子类化”,使用全局鼠标钩子的很少。

虽然这些例子解决了“让Msflexgrid控件支持鼠标滚轮”这个问题,但依然有一些小问题,那就是自由度还不够(或者说需要自己用代码控制以免出错),比如滚动一页,比如滚轮定位。

下面,我将自己测试得到的成果介绍如下。

(PS:后面我还附加了判断MSFGrid控件是否有滚动条的方法)(再PS:如果要引用本文,请注明出处)'在Module模块里的代码:'API函数和常数申明Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const GWL_WNDPROC = (-4)Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPrivate Const WM_MOUSEWHEEL = &H20APrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Declare Function GetScrollRange Lib "user32 " (ByVal hWnd As Long, ByVal nBar As Long, lpMinPos As Long, lpMaxPos As Long) As LongPrivate Const SB_HORZ = &H0Private Const SB_VERT = &H1Private Declare Function GetFocus Lib "user32" () As LongPrivate Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long'定义变量Private lhWnd As Long, SubhWnd As LongPrivate FhWnd As Long, L As Long, clsName As StringPublic MSFG As MSFlexGrid'启动子类化,传入Form1.hWndPublic Sub Start_SubClass(ByVal hWnd As Long)lhWnd = hWndSubhWnd = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf SubClass)End Sub'结束子类化Public Sub Exit_SubClass()Call SetWindowLong(lhWnd, GWL_WNDPROC, SubhWnd)End Sub'子类化函数Public Function SubClass(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongSubClass = CallWindowProc(SubhWnd, hWnd, Msg, wParam, lParam)If Msg = WM_MOUSEWHEEL Then'测试消息用'Form1.Print Hex(wParam)'Call MoveMSFGWheel_A(wParam) '方法一Call MoveMSFGWheel_B(wParam) '方法二End IfEnd Function'方法一Private Sub MoveMSFGWheel_A(wParam As Long)'判断是否有MSFlexGrid获得焦点,需要在MSFlexGrid的GotFocus事件里设置Set MSFG =MSFlexGrid1,在MSFlexGrid的LostFocus事件里设置Set MSFG =NothingIf Not MSFG Is Nothing ThenWith MSFGSelect Case wParamCase &H780000 '向上滚滚动条If .TopRow > .FixedRows Then .TopRow = .TopRow - 1Case &H780008 '按住Ctrl向左滚滚动条If .LeftCol > .FixedCols Then .LeftCol = .LeftCol - 1Case &HFF880000 '向下滚滚动条If .TopRow < .Rows - 2 Then .TopRow = .TopRow + 1Case &HFF880008 '按住Ctrl向右滚滚动条If .LeftCol < .Cols - 2 Then .LeftCol = .LeftCol + 1End SelectEnd WithEnd IfEnd Sub'方法二'垂直'Call SendMessage(MSFlexGrid1.hwnd, 277, 0, 0) '往上滚'Call SendMessage(MSFlexGrid1.hwnd, 277, 1, 0) '往下滚'Call SendMessage(MSFlexGrid1.hwnd, 277, 2, 0) '往上滚一页'Call SendMessage(MSFlexGrid1.hwnd, 277, 3, 0) '往下滚一页'Call SendMessage(MSFlexGrid1.hwnd, 277, &HE0004, 0) '跳到第14行'Call SendMessage(MSFlexGrid1.hwnd, 277, 6, 0) '顶部'Call SendMessage(MSFlexGrid1.hwnd, 277, 7, 0) '底部'水平'Call SendMessage(MSFlexGrid1.hwnd, 276, 0, 0) '往左滚'Call SendMessage(MSFlexGrid1.hwnd, 276, 1, 0) '往右滚'Call SendMessage(MSFlexGrid1.hwnd, 276, 2, 0) '往左滚一页'Call SendMessage(MSFlexGrid1.hwnd, 276, 3, 0) '往右滚一页'Call SendMessage(MSFlexGrid1.hwnd, 276, &HE0004, 0) '跳到第14列'Call SendMessage(MSFlexGrid1.hwnd, 276, 6, 0) '左边缘'Call SendMessage(MSFlexGrid1.hwnd, 276, 7, 0) '右边缘'知道了上面那些消息,就能很自由的控制MSFlexGrid了,'当然,结合LeftCol和TopRow属性来控制,那就更完美了。

Vb6.0中ADO编程易混淆概念解析

Vb6.0中ADO编程易混淆概念解析

一170一 万方数据
现代商贸工业
No.22,2012
Modern Business Trade Industry
2012年第22期
城市景观绿地规划设计与施工探讨
姜大钊
刘 帅
(松原市规划局,吉林松原138000) 摘要:城市景观绿地主要以改善城市环境、美化市容、塑造城市景观形象为目的的一类具有较强装饰功能和使用功 能的公共绿地形式。常见的城市景观绿地包括:城市广场、街旁游园、滨水景观绿地和步行商业街绿地。主要探讨城市景 观绿地规划设计与施工。 关键词:景观绿地;规划设计;施工 中图分类号:TB 文献标识码:A
Dim Dim Dim
cnn
rs
广大人民群众是城市环境感受与需求的主体,设计者 必须重视大众的社会生活需求,时刻体现“以人为本,为人 服务;发现人的需求,满足人的需求”的原则。城市绿地规 划建设需要以人为本,否则就没有多样性和系统化景观,这 样就极有可能与城市的规划建设相背而向。所以,对于城 市景观绿地进行规划时要满足人性化的心理和感性认识的 要求。城市景观绿地是否便利、是否能满足人在心理、生理 等诸方面的需求,将是景观绿地设计成败的关键。
2.3历史延续原则
在进行城市景观绿地规划设计之前,必须理清历史文
rs.CursorType=adOpenStatic rs.LockType=adLockReadOnly’
As Connection
As Recordset As String
Cnn
rs.Open”select*from教师表where性别=’女“‘, Textl.Text—rs.Fields(教师id”) 同时需要注意的是:一些变量名的、其作用域的区分。
1.3
ADo编程模式

MS Flex Grid控件

MS Flex Grid控件

MS Flex Grid控件是微软的一个网格控件,可以用于显示数据库中的信息,对于一些比较简单的显示方式,还是比较方便的。

加入MS Flex Grid控件控件的方法:在VC中选择Project|Add to Project|Conpenments and Controls 在弹出的对话框中选择Registered ActiveX Controls然后选择Microsoft FlexGrid Control, version 6.0。

系统会提示你加入几个类进入你的工程。

包括四个类:CMSFlexGrid,CRowCursor,COleFont,CPicture;同时在VC的Control面板上会显示出MS Flex Grid控件的图标,可以同其他普通控件一样操作这个控件。

一、引言MSFlexGrid控件是Visual C++中提供的已注册ActiveX控件,它常被用于显示和操作表格式数据,特别是数据库文件的显示及交互操作。

在其他程序的交互界面中,对于不确定数目的同类大批量数据的输入而言,MSFlexGrid是十分有效的。

利用MSFlexGrid可以将输入文件中的数据显示出来并作交互修改,通过功能扩展可将表格数据直接copy到Excel、Word及Origin中的表格内,利用右键菜单实现此功能。

本文编程实现了上述类似功能,并将MSFlexGrid控件的一些调整操作(如行高、列宽、Cell内容的对齐方式等)加以外部按钮化,使其更为方便易用。

二、先行者对MSFlexGrid控件功能的扩充王勇、李延平[1]提出在MSFlexGrid的当前网格单元(Cell)内创建同样尺寸的编辑框(CEdit)覆盖该Cell,并将Cell内的Text传给编辑框,通过此编辑框以实现MSFlexGrid的网格编辑功能。

秦胜[2]提出用信息预解释(PreTranslate)方法,截留编辑框(CEdit)内的ESC键与回车键(Enter)按下消息,以防止在编辑框内不小心按下上述两按键之一时立刻关闭对话框,退出整个程序。

msflexgrid.ocx 注册语句

msflexgrid.ocx 注册语句

`msflexgrid.ocx` 是Microsoft FlexGrid 控件的一个组件,它是一个用于Windows应用程序的ActiveX 控件,可以用来创建数据网格,用于显示和编辑数据。

在Visual Basic、C++ 或其它支持ActiveX 的编程环境中,你可以在运行时动态注册这个控件。

注册`msflexgrid.ocx` 控件的步骤通常如下:1. 首先确保`msflexgrid.ocx` 文件在你的系统中是存在的,它通常位于`C:\Windows\System32` 目录下,或者在你的开发环境的组件目录中。

2. 打开命令提示符(在Windows 中可以通过按下`Win + R` 键,然后输入`cmd` 并回车来打开)。

3. 使用`regsvr32` 命令来注册控件。

如果您的系统是64 位的,您可能需要使用`regsvr32` 的`/s` 参数和`/i` 参数来注册`msflexgrid.ocx`。

对于32 位的系统,通常使用以下命令之一:对于32 位系统:```regsvr32 C:\Windows\System32\msflexgrid.ocx```或者```regsvr32 /s C:\Windows\System32\msflexgrid.ocx```对于64 位系统:```regsvr32 C:\Windows\SysWOW64\msflexgrid.ocx```或者```regsvr32 /s C:\Windows\SysWOW64\msflexgrid.ocx```4. 注册完成后,您可能需要重启您的计算机或重新启动您的开发环境,以便更改生效。

请注意,如果在注册过程中出现错误,错误信息将有助于诊断问题。

常见的错误包括文件未找到、注册失败等。

如果遇到问题,您可能需要根据错误信息查找相应的解决方案。

vfp含GRID通用表单的设置

vfp含GRID通用表单的设置

vfp含GRID通用表单的设置Grid是VFP功能强大的表格(或者说网格)控件,它提供了比Browse 窗口强大得多的控制方式。

Grid是包含列对象的容器对象,而列对象包含了列标题对象及列控件对象,均有各自相应的属性集,因此我们可以完全控制表格中的任何一个元素,设计出通用的报表录入界面。

下面我们就详细讨论如何使用Grid控件设计通用录入界面,并解决几个设计过程中经常碰到的问题。

一、基本原理思路设计灵活性、通用性较强的录入界面较为合适的方法是:采用数据表(DBF文件)控制Grid控件的行列显示信息、显示方式。

因此,我们将Grid控件的数据源RecordSource设为数据表(DBF文件),其数据格式、显示方式及行列提示信息则分别由数据表RowMsg.DBF(控制表格的行即记录方面信息)、ColMsg.DBF(数据格式并控制Grid控件的列方面信息)进行控制。

另外,一般来说指定Grid控件第一列显示行提示信息,若有多个提示信息字段,可连接处理为一列。

二、前期准备工作1.创建表RowMsg.DBF,该表有2个字段,用于显示Grid控件行信息:Create Table RowMsg(Code C(5),Name C(33))2. 创建表ColMsg.DBF,该表有6个字段,用于控制、显示表格各列信息:Create Table ColMsg(Code C(5),Name C(20),NeedIn L(1),Field_Name C(10),Field_Type C(1),Field_Len N(3),Field_Dec N(3))3.创建表单In_Grid,将其属性Name改为“FrmGrid”, Caption 改为“数据录入/修改窗口”;在表单上放置Grid控件,将其属性Name改为“GridDat”;在表单上放置Command控件,将其属性Name改为“CmdExit”, Caption改为“关闭退出”。

MSHflexgrid与MSflexgri的区别

MSHflexgrid与MSflexgri的区别

msflexgrid和mshflexgrid区别与联系做几房收费系统,在显示查询数据结果的时候,多次的使用到了flexgrid控件.为我们的显示提供了很好的方便.在说这个控件之前,首先说一下与他类似的一个控件,mshflexgrid.他们两个的区别简单地说,MSFlexGrid和MSHFlexGrid之间的区别,主要是后者支持ADO的层次显示。

如果你不使用ADO,可以考虑MSFlexGrid,否则建议使用MSHFlexGrid。

这两个控件的详解:*********************************************************** MSFlexGrid 控件Microsoft FlexGrid (MSFlexGrid) 控件可以显示网格数据,也可以对其进行操作。

它提供了高度灵活的网格排序、合并和格式设置功能,网格中可以包含字符串和图片。

如果将它绑定到一个Data 控件上,那么MSFlexGrid 显示的将是只读的数据。

语法MSFlexGrid说明文本和图片可以同时或者单独放在MSFlexGrid 的任何一个单元格中。

Row 和Col 属性指定了当前的MSFlexGrid 单元格。

程序员可以在代码中改变当前单元格,用户可以在运行时使用鼠标或者箭头键改变它。

Text 属性提供了当前单元格内容的参考信息。

如果单元格中的文本过长,无法全部显示在单元格的一行中,而且WordWrap 属性被设置为True,那么文本将回绕到同一单元格的下一行。

如果需要显示被回绕的文本,需要增加单元的列宽(ColWidth 属性)或行高(RowHeight 属性)。

使用Col 和Row 属性可以分别确定MSFlexGrid 中列与行的个数。

*********************************************************** MSHFlexGrid 控件Microsoft Hierarchical FlexGrid (MSHFlexGrid) 控件对表格数据进行显示和操作。

VB教案(4-4)

VB教案(4-4)

Visual Basic 程序设计(4-4)【教学主要内容】⏹SQL语言实现数据库表的查询⏹SQL语言实现数据库表的统计⏹多文档界面的实现【教学要求】⏹理解:SQL语言⏹掌握:SQL实现数据库表的查询SQL实现数据库表的统计多文档界面第四节结构化查询语言一、SQL基础二、SQL数据查询语言三、多文档界面四、应用实例一、SQL基础语句说明语句说明数据处理SELECT检索数据库中数据INSERT插入新的数据行DEIETE删除数据行UPDATE修改数据数据定义CREATE TABLE建立一个新表DROP TABLE删除一个表ALTER TABLE修改一个表的结构CREATE VIEW建立一个视图DROP VIEW删除一个视图CREATE IDEX建立一个索引DROP IDEX删除一个索引二、SQL数据查询语言⏹SELECT 字段表⏹FROM 表名⏹WHERE 查询条件⏹GROUP BY 分组字段二、SQL数据查询语言⏹ORDER BY 字段⏹集合函数:MIN,MAX,SUM,AVG,COUNT三、多文档界面⏹MDI概述⏹建立MDI的过程⏹与MDI相关的属性、事件MDI概述⏹MDI是指在一个应用程序中打开多个相互独立的文档子窗口。

⏹VB中的3类窗体:⏹MDI父窗体⏹MDI子窗体⏹标准窗体(可与MDI子窗体互相转换)建立MDI的过程(1)添加MDI窗体作为主窗体工程菜单->添加MDI窗体(2)将MDI窗体设为启动工程菜单->工程属性->启动对象-> MDI窗体注意:一个工程只能有一个MDI窗体(3)MDI子窗体⏹MDI的子窗体就是标准窗体。

只要将标准窗体MDIChild=true即可⏹MDI子窗体的载入(设form2是MDI子窗体) DIM NewFrm As New form2 NewFrm.Show…载入并显示一个子窗体‘可以反复载入多个独立的子窗体与MDI相关的属性、事件⏹MDIChild属性:是否为MDI子窗体。

Microsoft flexGrid control Microsoft flexGrid control控件比较常见。

Microsoft flexGrid control Microsoft flexGrid control控件比较常见。

Microsoft flexGrid control控件比较常见。

【实现步骤】1.当鼠标点击表格控件的某一格时,首先判断该列的属性,是直接编辑呢,还是用下拉列表进行选择。

2.显示隐藏的文本控件或者下拉列表控件,显示的位置和大小与选中格的位置大小完全相同,这样可以覆盖选中格3.将选中格的内容填到文本控件或者下拉列表控件中4.修改完毕后,将新的内容填到选中格中,同时隐藏文本控件或者下拉列表控件。

【主要程序段及说明】变量定义:CComboBox m_ChangeCombo;--下拉列表控件,初始时不可见CEdit m_Change;---------------文本控件,初始时不可见CSring m_sChange;----------------与文本控件关联的字符串CMSFlexGrid m_FlexGrid;-----表格控件程序段:表格点击事件:选中某一格后,就要显示相应的文本控件或者列表控件void CChartInfoEditDlg::OnClickMsflexgrid(){//点击无效区,返回long lRow = m_FlexGrid.GetRowSel();//获取点击的行号long lCol = m_FlexGrid.GetColSel(); //获取点击的列号if(lRow>m_SAttrInfo.attrNum) //如果点击区超过最大行号,则点击是无效的return;if(lRow == 0) //如果点击标题行,也无效return;//CRect rect;m_FlexGrid.GetWindowRect(rect); //获取表格控件的窗口矩形ScreenToClient(rect); //转换为客户区矩形// MSFlexGrid 控件的函数的长度单位是"缇(twips)",//需要将其转化为像素,1440 缇= 1 英寸CDC* pDC =GetDC();//计算象素点和缇的转换比例int nTwipsPerDotX = 1440 / pDC->GetDeviceCaps(LOGPIXELSX) ;int nTwipsPerDotY = 1440 / pDC->GetDeviceCaps(LOGPIXELSY) ;//计算选中格的左上角的坐标(象素为单位)long y = m_FlexGrid.GetRowPos(lRow)/nTwipsPerDotY;long x = m_FlexGrid.GetColPos(lCol)/nTwipsPerDotX;//计算选中格的尺寸(象素为单位)。

msflexgrid1(msflexgrid1)

msflexgrid1(msflexgrid1)

msflexgrid1(msflexgrid1)The AllowBigSelection attribute in the head or click on the column header, (whether) can make the entire row or column are selected.The AllowUserResizing property (whether) you can use the mouse to adjust the size of columns and rows in the control MSFlexGrid.The drawing style of Appearance attribute designBorderStyle property border styleThe BackColorBkg attribute table 'excess colorBackColorFixed property 'table header part colorBackColorSel property 'selects some colorsThe BackColor attribute 'all uncertain color unitThe background and foreground color CellBackColor and the CellForeColor property returns or sets a single unit or group of units.ForeColor, ForeColorFixed and color of each part of the ForeColorSel attribute text.TextStyle and TextStyleFixed[= style] property returns or sets the 3D style of text on a specified cell or a group of cells.FixedAlignment (index) = [value] attribute column number, setting valueFlexAlignLeftTop 0 left topFlexAlignLeftCenter 1 left middleFlexAlignLeftBottom 2 left bottomTop of flexAlignCenterTop 3FlexAlignCenterCenter 4 middleBottom of flexAlignCenterBottom 5Right top of flexAlignRightTop 6FlexAlignRightCenter 7 right middleRight bottom of flexAlignRightBottom 8ColAlignment (number) [= value] property returns or sets the alignment of data in a column of the number= column, or -1 (one of all columns set). Setting value of value:FlexAlignLeft 0 left alignedRight align of flexAlignRight 1FlexAlignCenter 2 in the middleTextStyle and TextStyleFixed[= style] property returns or sets the 3D style of text on a specified cell or a group of cells.The CellTextStyle property [= value] unit or group of units of the 3D text styleFlexTextFlat 0 plane (general text)FlexTextRaised 1 bulgesSubsidence of flexTextInset 2FlexTextRaisedLight 3 slightly raisedFlexTextInsetLight 4 slightly sunkenThe alignment of the CellPictureAlignment property [= value] unit or group of units selected picturesFlexLeftTop 0 left top alignmentFlexLeftCenter 1 left middle alignmentFlexLeftBottom 2 left bottom alignmentAlign flexCenterTop 3 center topFlexCenterCenter 4 centered, middle alignedAlign the bottom of flexCenterBottom 5FlexRightTop 6 right top alignmentFlexRightCenter 7 right middle alignmentRight bottom alignment of flexRightBottom 8The CellAlignment property unit or a group of selected data alignment in the unit.FlexLeftTop 0 left top alignmentFlexLeftCenter 1 the left middle alignment (which is the default case for string.)FlexLeftBottom 2 left bottom alignmentAlign flexCenterTop 3 center topFlexCenterCenter 4 centered, middle alignedAlign the bottom of flexCenterBottom 5FlexRightTop 6 right top alignmentFlexRightCenter 7 right middle alignment (this is the default for the case number,)Right bottom alignment of flexRightBottom 8FlexGeneral 9 the general situation is: the string, the left middle alignment, the number of,Align the middle of the right. Set the alignment of all units Static K As IntegerIf k > 9 Then k = 0For I = 0 To MSFlexGrid1.Rows - 1For J = 0 To MSFlexGrid1.Cols - 1MSFlexGrid1.Row = IMSFlexGrid1.Col = JMSFlexGrid1.CellAlignment = kNext JNext IK = K + 1CellFontBold the bold style of the current unit text CellFontItalic the italic style of the current unit text CellFontName the font name of the current unit textThe size of the current unit text for CellFontSizeCellFontStrikeThrough (or not) applies the FontStrikeThrough style to the current unit text.CellFontUnderline underline the current unit textThe width of the current unit text represented by CellFontWidth pointsThe CellHeight, CellLeft, CellTop, and CellWidth attributes return the location and size of the current unit in units of a.. Not available at design time.The ColPos (index) attribute returns the distance between the upper left corner of the control and the upper left corner of the specified column.The RowPos (index) property returns the distance between the upper left corner of the control and the upper left corner of the specified row.ColWidth (number)] [= value property returns or sets in twips for a specified column unit width of the column number number. If it is -1, then all columns are set at once. The width of value column 0 creates invisible columns, and the -1 width is reset to its default value, depending on the size of the current font.RowHeight (number) value [=] this property returns or sets for the specified row in twips unit height. If you set RowHeight to 0, you create invisible rows. If it is set to -1, then the line height is reset to its default value, depending on the size of the current font The RowHeightMin property returns or setsthe minimum row height of the whole control in the unit of a..The image shows the current CellPicture attribute [= picture] unit or group of units in theThe Clip property [= string] (when the data into the MSFlexGrid control unit cell selection) selection this property returns or sets the contents of the MSFlexGrid control. Not available at design time. Tab Chr (9) moves to the right one, and carriage return character Chr (13) moves to the next lineThe coordinates Col and Row [= number] property returns or sets of action units (the unit of row and column)The ColSel and RowSel[= value] attributes return or set the start or end rows or columns of a group of units. Not available at design time. After the Row and Col attributes are set, the RowSel and ColSel are reset automatically. The current cell value (determined by the settings of Col and Row) is the text contained in that unit. You can modify the value of the unit without changing the selected Row and Col attributes by the TextMatrix property.Cols and Rows [= value] return or total number of columns or rows in a MSFlexGrid setting.The total number of FixedCols and FixedRows [= value] fixed columns or fixed line. Defaults to a fixed column and a fixed lineColData (number) and RowData (number) value] [= propertyreturns or sets an arbitrary row and column associated with each of the long values of type number controls in the row or column number.The ColIsVisible (index) property specifies whether a column is visible at present (or not)ColPosition (number)] [= value (horizontal movement) attributeRowPosition (number)] [= value (vertical movement) of attribute row or column position setting,To allow the row and column moved to the specified position. Number will be moving a row or column number, the new position of the value columns or rows. When you use these properties to move a row or column, all formatting information will move along with it. If you want to move the text, use the Clip property. For example, the following code moves the line to the first position when a user clicks on a line:Sub MSFlexGrid1_Click ()MSFlexGrid1.ColPosition (MSFlexGrid1.MouseCol) = 0End SubThe container Container [= container] property returns or sets the control: Form, Frame, PictureBoxThe DataBindings property returns the DataBindings collection object, which contains useful binding attributes.The DataSource property sets a value that specifies the value of the Data control, and connects the current control to the database through this control. The connection between fields in the Recordset managed by the Data control and the name of the Field object in the DataField property must also be provided when the runtime is unavailable. Different from the DataField property, the DataSource property is not available at run time.DragIcon [= icon] property returns or sets the icon, it will drag the pointer as a display.? DragMode [= number] property manually or automatically drag.Enabled [= boolean] attribute to the user is able to react to the events.FillStyle [value] = the attribute returns or sets a value that determines the value of the Text property or the MSFlexGrid of one unit of the format attribute set affect all selected units. The setting of value value is: 0 single (default). 1 repeats. Change the Text or any unit properties will affect all selected unitsFocusRect [= value] attribute should draw a focus rectangle around the current cell. The setting value of value is:FlexFocusNone 0 No.FlexFocusLight 1 fine (default).FlexFocusHeavy 2 thick.HighLight [= value] the attribute value determines whether the selected unit to highlight the value value is set:FlexHighlightNever 0 never highlighted the selected unit.FlexHighlightAlways 1 always highlight the selected unit. (default)FlexHighlightWithFocus 2 when the control has focus, highlight the selected unit.FontWidth [= value] property returns or sets in points using the font width text display unit. 0: default width: default of valueText text [= string] property returns or sets the unit or group of units. When searching the Text attribute always retrieve the current unit defined by the Row and Col properties of the content. When setting, the Text property sets the current unit or the currently selected content, depending on the setting value of the FillStyle property.TextArray (cellindex) string] [= text of the attribute of returns or sets of arbitrary element.TextMatrix (rowindex, COLINDEX) [= string] the text content of the attribute of returns or sets of arbitrary element.FormatString [= string] attribute fixed line and fixed column format string ^ < > respectively: left, right, | (vertical) saidunit separator; (semicolon) separator column header and wardrobe. For example, s$= "|<Name|>Address|^Telephone|Social Security#" set column head s$= s$+ "; |Robert|Jimmy|Bonzo|John Paul" set the head line MSFlexGrid1.FormatString = s$The GridColor property (effective GridLines is set to 1 common line)The GridColorFixed property (effective GridLinesFixed is set to 1 common line) returns or sets the drawing lines in each unit between the use of colorGridLines and GridLinesFixed[= value] property returns or sets the type of line between units. The setting value of value is:FlexGridNone 0 has no line.FlexGridFlat 1 (general line for GridLines is the default).FlexGridInset 2 in line (for GridLinesFixed is the default)FlexGridRaised 3 convex line.The number of pixels in GridLineWidth [= value] property returns or sets the width of the grid lines. 1 (the default) -.The Height and Width properties of the external height and width? The Left and Top attributes are expressed in the form of units in the form of units; the control is determined by the coordinate system of its container.HelpContextID [= number] property returns or sets an associated context to help number 0 (the default) without context number. > 0 is used to specify the valid context number Handle the hWnd property returns a form or control. For example: Windows API call mandatory form StayOnTop (see code Vb519, 20)? The Index property is set to create a default object in the collection order. The index of the first object in the collection is always 1TopRow [= number] property returns or sets the highest visible line (not fixed).LeftCol [= value] visible property returns or set the leftmost (rather than a fixed column) can have the purpose of rolling MSFlexGrid in the code to use this attribute.RowIsVisible (index) for specific attribute indicates whether the current visible.MergeCells [= value] this property returns or sets a value, this value determines whether a packet should unit will have the same content to span multiple rows or columns of the same element. The setting value of value is:FlexMergeNever 0 (default) does not have the same content of the unit groupFlexMergeFree 1 free groupingFlexMergeRestrictRows 2 has restrictions on linesRestrictions on flexMergeRestrictColumns 3 columnFlexMergeRestrictBoth 4 rows and columns are restrictions: Limited mergerMergeCells = 2MergeRow (0) = TrueMergeRow (1) = TrueMergeRow (2) = TrueMergeRow (3) = FalseThe ability of merging unit which can display data in a clear and attractive way. Unit with classification and sort out ability to coordinate the MSFlexGrid control to use. In order to use the MSFlexGrid control unit with the ability, must do the following two things:MergeCol and MergeRow (number) two] Boolean [= attribute property returns or sets a value that determines the value when the MergeCells property is set to 0 (with) after a value outside of which the rows and columns of the content should be merged. If the MergeCells property is set to a value other than 0, so with the same values of adjacent units, if they are in the MergeRow property to True in the same row, or in the MergeCol property to True in the same column, will be merged.MouseCol and the MouseRow property returns the mouse in a table row and column number.MouseIcon = LoadPicture (pathname) [= picture]Type MousePointer attribute [= value] mouse pointer.Name attributeThe Object property [.Property |.Method] returns the object and / or object or attribute set. The specified objects to be used in the Automation task with this attribute. Attributes supported by property objects. Methods supported by method objects.OLEDropMode属性[ =模式]?母属性返回包含控件、或其它对象或者集合的窗体、对象、或集合。

怎么添加控件

怎么添加控件

WinCC Microsoft Visual Basic 6.0控件在WinCC的图形编辑器中添加Microsoft Visual Basic 6.0控件,却显示错误,用不了,这是怎么回事啊?请赐教!谢谢!问题补充:是我没说清楚,图形编辑器-〉打开画面-〉对象选项板-〉控件-〉右键添加/删除-〉打开选择OCX控件对话框-〉选择Microsoft Hierarchical FlexGrid Control,Version 6.0,点击确定,但是这个控件在画面里却用不了,为什么啊?我没有授权,是不因为这个阿有以下几个解决方法:1.安装Visual Basic V6.02.找到VisualBasic V6.0安装盘,搜索VBCTRLS.REG文件,进行注册。

3.打开记事本,将以下内容复制到记事本中,然后重命名为VBCTRLS.REG,双击注册:REGEDITHKEY_CLASSES_ROOT\Licenses = Licensing: Copying the keys may be a violation of established cop yrights.// The 16 bit and 32-bit OCX Professional license follows:HKEY_CLASSES_ROOT\Licenses\DB4C0D00-400B-101B-A3C9-08002B2F49FB = mgkgtgnnmnmnini gthkgogggvmkhinjggnvm// The 32 bit OCX Professional license follows:HKEY_CLASSES_ROOT\Licenses\7BC20EDC-4A42-101B-A3C9-08002B2F49FB = gifblihbhiiihbciocfb kifbqcfcdiebbiqhVBCTRLS.REG高手帮忙!!!重谢!!EXCEL中无法导入VB窗体控件浏览次数:620次悬赏分:100 |解决时间:2010-4-29 18:16 |提问者:sxyxiyun怎么在EXCEL中导入窗体控件?????自己写了个窗体控件嵌在一个XLSM的EXCEL2007格式的带宏工作簿中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Microsoft flexGrid control控件比较常见。

【实现步骤】
1.当鼠标点击表格控件的某一格时,首先判断该列的属性,是直接编辑呢,还是用下拉列表进行选择。

2.显示隐藏的文本控件或者下拉列表控件,显示的位置和大小与选中格的位置大小完全相同,这样可以覆盖选中格
3.将选中格的内容填到文本控件或者下拉列表控件中
4.修改完毕后,将新的内容填到选中格中,同时隐藏文本控件或者下拉列表控件。

【主要程序段及说明】
变量定义:
CComboBox m_ChangeCombo;--下拉列表控件,初始时不可见
CEdit m_Change;---------------文本控件,初始时不可见
CSring m_sChange;----------------与文本控件关联的字符串
CMSFlexGrid m_FlexGrid;-----表格控件
程序段:
表格点击事件:选中某一格后,就要显示相应的文本控件或者列表控件
void CChartInfoEditDlg::OnClickMsflexgrid()
{
//点击无效区,返回
long lRow = m_FlexGrid.GetRowSel();//获取点击的行号
long lCol = m_FlexGrid.GetColSel(); //获取点击的列号
if(lRow>m_SAttrInfo.attrNum) //如果点击区超过最大行号,则点击是无效的
return;
if(lRow == 0) //如果点击标题行,也无效
return;
//
CRect rect;
m_FlexGrid.GetWindowRect(rect); //获取表格控件的窗口矩形
ScreenToClient(rect); //转换为客户区矩形
// MSFlexGrid 控件的函数的长度单位是"缇(twips)",
//需要将其转化为像素,1440 缇= 1 英寸
CDC* pDC =GetDC();
//计算象素点和缇的转换比例
int nTwipsPerDotX = 1440 / pDC->GetDeviceCaps(LOGPIXELSX) ;
int nTwipsPerDotY = 1440 / pDC->GetDeviceCaps(LOGPIXELSY) ;
//计算选中格的左上角的坐标(象素为单位)
long y = m_FlexGrid.GetRowPos(lRow)/nTwipsPerDotY;
long x = m_FlexGrid.GetColPos(lCol)/nTwipsPerDotX;
//计算选中格的尺寸(象素为单位)。

加1是实际调试中,发现加1后效果更好
long width = m_FlexGrid.GetColWidth(lCol)/nTwipsPerDotX+1;
long height = m_FlexGrid.GetRowHeight(lRow)/nTwipsPerDotY+1;
//形成选中个所在的矩形区域
CRect rc(x,y,x+width,y+height);
//转换成相对对话框的坐标
rc.OffsetRect(rect.left+1,rect.top+1);
//清空下拉列表的内容
m_ChangeCombo.ResetContent( );
//以下省略哪一列用文本控件,哪一列用下拉列表控件的判断。

如果是用下拉列表控件,则会先向下拉列表控件中增加数据,否则为空……………………………….
……………………………….
//获取选中格的文本信息
CString strValue = m_FlexGrid.GetTextMatrix(lRow,lCol);
int num = m_ChangeCombo.GetCount();
//如果下拉列表控件中有数据,则表示使用下拉列表控件来进行数据选择if(num!=0)
{
m_ChangeCombo.ShowWindow(SW_SHOW);//显示控件
m_ChangeCombo.MoveWindow(rc); //移动到选中格的位置,覆盖
m_ChangeCombo.SelectString(-1,strValue); //内容全选。

方便直接修改
m_ChangeCombo.SetFocus(); //获取焦点
UpdateData(false);
return;
}
//
m_Change.ShowWindow(SW_SHOW); //显示控件
m_Change.SetWindowText(strValue); //显示文本
m_Change.SetFocus(); //获取焦点
m_Change.SetSel(0,-1); //全选
m_Change.MoveWindow(rc); //移动到选中格的位置,覆盖}
文本编辑完毕后,回车即将新的文本信息填到选中格中
void CChartInfoEditDlg::OnKillfocusEditChange()
{
UpdateData(true);
m_FlexGrid.SetText(m_SChange);//设置文本信息
m_Change.ShowWindow(SW_HIDE); //隐藏文本控件
UpdateData(false);
}
下拉列表编辑完毕后,将新的新息填到选中格中
void CChartInfoEditDlg::OnKillfocusChangecombo()
{
UpdateData(true);
CString str;
m_ChangeCombo.GetWindowText(str);
m_FlexGrid.SetText(str);
m_ChangeCombo.ShowWindow(SW_HIDE);
UpdateData(false);
}
【总结】这是一个比较简单的程序。

如果表格中列较多,属性各有不同,也许大家可以试着用更加复杂的控件来编辑信息。

也可以同时做多个文本控件和下拉列表控件,以对应不同列的不同信息要求(比如有的格信息可能又不同的格式要求,那么可以预先做好各种不同风格的控件与之对应)。

【笔者注】虽然当前有许多这样的例子。

但笔者做这个程序时,并没有借鉴现有的东西。

因此可能在方法上不见得最简单。

但确实效果不错,对付一般情况是没有问题的。

大家如果对此有疑问或新思想,可以和笔者讨论。

联系信箱:happyparrot@。

相关文档
最新文档