【vfp精品源码栏目提醒】:本文主要为网学会员提供“包括许多【精品共享-doc】 - 其它管理文献”,希望对需要包括许多【精品共享-doc】 - 其它管理文献网友有所帮助,学习一下!
使用 Visual FoxPro 的 ActiveX 控件 第 1 页 使用 Visual FoxPro 的 ActiveX 控件Doug Hennig Interpret By RMH 简介 ................................................................................................................................. 2 IMAGELIST 控件 ......................................................................................................... 3 TREEVIEW 控件........................................................................................................... 4 TREEVIEW 控件 .............................................................................................................4 TREEVIEW 控件的方法和事件 ......................................................................................5 TREEVIEW 控件属性 ......................................................................................................8 节点集合方法 ................................................................................................................9 节点集合属性 ................................................................................................................9 节点对象方法 .............................................................................................................. 10 节点对象属性 .............................................................................................................. 10 载入TREEVIEW 控件 .................................................................................................... 10 拖放 ............................................................................................................................. 12 示例 ............................................................................................................................. 12 COMMON DIALOGS 控件 ........................................................................................ 14 方法 ............................................................................................................................. 14 属性 ............................................................................................................................. 14 派生 COMMON DIALOGS .............................................................................................. 16 其它注意事项 .............................................................................................................. 17 CALENDAR 控件 ........................................................................................................ 18 方法和事件.................................................................................................................. 18 属性 ............................................................................................................................. 18 示例 ............................................................................................................................. 18 PROGRESSBAR 控件 ................................................................................................. 20 方法和事件.................................................................................................................. 20 属性 ............................................................................................................................. 20 示例 ............................................................................................................................. 20 SLIDER 控件 ............................................................................................................... 21 方法和事件.................................................................................................................. 21 属性 ............................................................................................................................. 21 示例 ............................................................................................................................. 21 使用 Visual FoxPro 的 ActiveX 控件 第 2 页 简介 Visual FoxPro 包括许多 ActiveX 原来的 OLE 控件它们可用于添加大量新功能到你的应用程序. 它们中包括了 TreeView ListView StatusBar 和 CommonDialog 控件 允许你创建 Windows 9x 风格的应用程序. 另外 如 MAPI 和 Comm 控件 允许你添加 messaging 和串口控件到你的应用程序. 这些箜件中的一些没有多大用处: 如“threed” 控件 有些控件与
VFP 自身已有控件只有极小差异 并且看起来只能用于 Visual Basic 或 or Access. ActiveX 控件很容易接触到: 只需从表单控件工具栏中的 查看类 菜单中选择 ActiveX 控件 会有 30 个新的控件出现在工具栏中. 就象
VFP 自身的控件一样简单地从工具栏中拖动一个控件到表单中 给它取一个名字 设置一些属性. 除
VFP 属性表外 各控件有一个自定义属性表. 要访问该自定义属性表 在控件上右击并从出现的菜单中选择适当的项. 要想做得更好 你可以利用
VFP 是唯一的允许你派生ActiveX控件并添加附加行为的开发环境这一事实。
例如 你可以为一个控件建立一个封装类来隐藏它的复杂性和使其便于使用 或添加自定义属性和方法来进一步扩展控件功能。
我只试验了少量控件 并提供这些子类的源代码. 帮助文件包括了控件的属性 事件和方法PEM文档. 共有三个帮助文件: WINDOWSSYSTEMMSACAL70.HLP 日历控件 WINDOWSSYSTEMSYSINFO.HLP SysInfo 控件 和
VFP5CTRLHELPCTRLREF.HLP 其它控件. 通常 你可以在表单设计器或类设计器中选定一个 ActiveX 控件并按下 F1 来查看该控件的帮助主题我将在稍后注明一些例外. 但是 这些新控件的文档对
VFP 程序员没有太大的帮助: 文本和示例是针对于 Visual Basic 或 Access 一些文档的结构是离奇的 并存在着大量的错误和疏忽. 我将指出各控件的这些情形. 由于有许多新控件本文时间和内容的限制 我不可能全部描述它们. 我选择了我认为大多数用户可能会使用的控件: ImageList TreeView Common Dialogs Calendar Progress Bar 和 Slider. 本文焦点是如何在
VFP 中使用这些控件 给出有用的示例 并讨论最普通的属性事件和方法因此你可以定制它们的外观或行为. 使用 Visual FoxPro 的 ActiveX 控件 第 3 页 ImageList 控件 ImageList 控件非常简单 但因为我论述的其它控件要用到它所以我们将首先讨论它. ImageList 控件预载入一些图象因此其它控件如 TreeView 和 ListView 控件 可以拥有图象资源. 此外 它自己并不做任何用有的事情. 虽然该控件有少量属性 事件和方法 你可能不会用到它们. 通常 你会使用ImageList 控件的属性表 可在其上右击鼠标调出 来为另一个控件载入你需要的图象并设置图象的大小和颜色. 要载入图象到 ImageList 控件 简单地从 ActiveX 控件工具条上拖动一个到表单上 修改它的名字 调出 ImageList 控件的属性表 选择 Images 页 并插入你需要的图形. 各图形的索引值从 1 开始 用于其它控件选择一个图象. 例如我们将很快看到的 TreeView 控件 肯的一个 Add 方法来添加一个新节点 并使用了相关 ImageList 控件的索引号作为节点使用的图象. ImageList 控件位于 COMCTL32.OCX in WINDOWSSYSTEM 其帮助文档在CTRLREF.HLP中. 使用 Visual FoxPro 的 ActiveX 控件 第 4 页 TreeView 控件
VFP 5.0的新的ActiveX控件TreeView是一个有力的、可视的、吸引人的工具 你可以将它使用于许多应用程序。
但是其使用的复杂和技术文档的简单使很多人望而却步。
本文探索了一些使用TreeView的有用的技术。
VISUAL FoxPro 5.0 包含了很多新的ActiveX 原来的OLE 控件这些控件可以为你的应用程序增加很多新功能。
这些控件包括TreeView、ListView、StatusBar、和CommonDialog 控件 允许你为你的应用程序建立Windows 95 风格的界面。
ActiveX 控件很容易找到: 在表单控件工具栏中的查看类菜单中选择ActiveX 控件 会出现30 个新的控件。
简单的从工具条拖放一个控件到一个表单中就象使用
VFP自身的控件一样 给它一个名字 设置一些属性 等等… 在附加到
VFP 的属性表单 每一个控件都有一个定制的属性表。
要访问这个属性表 在控件上右击鼠标并从出现的快捷菜单中选择适当的项。
TreeView 控件 我的意见是 最重要的新控件是TreeView。
你已经使用过TreeView 控件-它被用于Windows Explorer的左边窗口中 以及
VFP的项目管理和类浏览器。
该控件在视觉上比
VFP 3.0 中的 Outline 控件更吸引人 且更容易处理。
例如 你要使节点显示你必须顺序添加节点到 Outline 控件。
在 TreeView 控件中你可以以任意顺序添加节点因为在添加新节点时你可以指定哪一节点是父节点。
你可以用 TreeView 控件来做许多事。
以下是一些例子: 在库存控件系统中显示一些原始单据清单。
用于向下延伸显示。
例如 你可以显示一个客户清单并为该客户向下延伸到订单的订货和产品。
另一个示例是区域表及所属销售人员及各销售人员的客户 等等。
改善组织图表: 分隔主管人员扩展的分支及其员工。
创建任何其它层次显示信息。
TreeView 控件位于 COMCTL32.OCX 在 WINDOWSSYSTEM 中。
如果你安装了 Visual Basic Control Creation Edition 会安装一个更新版本的 COMCTL32.OCX 这个版本有许多问题。
如果你的 COMCTL32.OCX 大于 325K 你应该从你的
VFP 5.0 CD-ROM 上重新安装一个正确的版本位于光盘上的 OSSYSTEM 目录中。
很多用户诉说在他们的系统中 TreeView 不能正确工作这也可能是原因之一。
TreeView 控件的帮助文档在 CTRLREF.HLP 中在
VFP 主目录中。
这个 TreeView 控件的帮助文件的内容可能是所有 ActiveX 控件中最可怜的帮助文件了可以说是高深莫测: 它的组织混乱 内容在多处有误 且经常是很模糊 尤其在文档中的如何访问一些方法和属性的地方更是如此。
使用 Visual FoxPro 的 ActiveX 控件 第 5 页 TreeView 控件允许你处理三个不同类型的对象:TreeView 控件自身 节点集合和节点对象。
节点集合与表单中的控件集合一样 它允许你用不同的索引号来访问个别节点对象。
但是 也可以不通过节点集合来访问不同的节点对象。
例如 TreeView 的SelectedItem 属性是一个选定节点的对象引用 因此象 NodeClick 和 Expanded 这样的方法接受一个节点的对象引用作为参数。
我将分别探讨这三个对象类型的属性 事件和方法。
在示例表单TREEVIEW.SCX 中展示了我在本文中描述的许多技术。
TreeView 控件的方法和事件 TreeView 控件响应一些我们觉的
VFP 控件的方法和事件: Click DblClick Drag DragDrop DragOver GotFocus KeyDown KeyPress KeyUp LostFocus MouseDown MouseMove MouseUp Move Refresh SetFocus ShowWhatsThis 和 ZOrder。
有一个很大的例外: 没有 RightClick 事件。
在稍后你会看到如何处理这种情况。
除这些方法和事件外TreeView 控件有一些它自己的方法和事件帮助文件中列出的 Clear 和 Remove 方法 实际上是属性节点集合而不是 TreeView 控件自己的: BeforeLabelEdit 和 AfterLabelEdit 发生在标签被用户修改前和修改后就象在 Windows 的资源管理器中 你可以单击选定的节点并修改它的文本在稍后你可以看到如何废止该自动编辑功能。
该事件中的代码通常用于在某处保存新的文本 如一个表中的字段。
Collapse 和 Expand 当用户收缩或扩展一个节点时激发。
它们接受的参数是选定节点的对象。
收缩或扩展一个节点不会使该节点成为活动的节点 这一点通常会使用户糊涂。
添加以下代码到 Collapse 和 Expand 事件来确保存该节点成为活动的节点调用了我将在稍解释的 NodeClick 它们只在你在这些方法中有一些自定义代码是才是必须的: lparameters node Node.Selected .T. This.NodeClickNode GetVisibleCount 显示控件中全部可见的节点数。
如果控件可以显示最后的节点该数可能看起来会很小。
HitTest :如果传递的 X 和 Y 座标上存在节点它返回一个节点对象引用否则返回 .NULL. 这里有一个新的问题: HitTest 期待 X 和 Y 座标值是缇twips 用于 Visual Basic 但
VFP 使用象素。
以下代码将转换象素值到缇。
TREEVIEW 示例表单的 INIT 中有这些代码 并有两个自定义属性来保存计算值: nTreeFactorX 和 nTreeFactorY。
local liHWnd liHDC liPixelsPerInchX liPixelsPerInchY 使用 Visual FoxPro 的 ActiveX 控件 第 6 页 定义一些常数。
define cnLOG_PIXELS_X 88 来自 WINGDI.H define cnLOG_PIXELS_Y 90 来自From WINGDI.H define cnTWIPS_PER_INCH 1440 每英寸1440 缇 定义一些 Windows API 函数 declare integer GetActiveWindow in WIN32API declare integer GetDC in WIN32API integer iHDC declare integer GetDeviceCaps in WIN32API integer iHDC integer iIndex 为
VFP 取得图形设备device context。
liHWnd GetActiveWindow liHDC GetDCliHWnd 取得每英寸象素值。
liPixelsPerInchX GetDeviceCapsliHDC cnLOG_PIXELS_X liPixelsPerInchY GetDeviceCapsliHDC cnLOG_PIXELS_Y 取得每象素缇并保存到表单属性中。
with This .nTreeFactorX cnTWIPS_PER_INCH/liPixelsPerInchX .nTreeFactorY cnTWIPS_PER_INCH/liPixelsPerInchY endwith 使用 Visual FoxPro 的 ActiveX 控件 第 7 页 HitTest 有助于解决一个处理鼠标右击事件。
你可能想在用户在节点上右击时显示弹式菜单 但在节点上右击时不会使它成为选定节点。
在控件的 MouseDown 事件中用以下代码来处理这一点因为没有 RightClick 事件所以这是你能处理右击的唯一办法。
同时 调用 NodeClick 仅当你在该方法中放有代码时才是必须的: lparameters Button Shift X Y local loNode if Button 2 如果这是右鼠标键 取得鼠标下的节点的引用。
loNode This.HitTestX Thisform.nTreeFactorX Y Thisform.nTreeFactorX 如果有可用的节点 选择它。
if not isnullloNode loNode.Selected .T. This.NodeClickloNode endif not isnullloNode 现在显示右击快捷菜单 else 处理必要的鼠标左击 endif Button 2 NodeClick: 当用户在节点上单击时激活 在 Click 事件之前。
NodeClick 接受一个选定节点的对象引用作为参数。
该方法被典型地用于在一个节点被选定时更新一些东西例如其它控件的值。
如果 NodeClick 中的代码执行时花的时间太长 选定项会被高亮显示但以前的项会被断续线包围。
移动鼠标即使没有单击鼠标按钮 会恢复以前项的高亮显示。
要避免这一问题 可以在 NodeClick 事件中放入以下代码来保证节点被单击而成为选定项: Node.Selected .T. StartLabelEdit: 通常被用于编辑节点的标签。
它用于 LabelEdit 属性被设置为1-手动时。
使用 Visual FoxPro 的 ActiveX 控件 第 8 页 TreeView 控件属性 如同事件一样 TreeView 控件支持一些其它控件所拥有的属性 包括 DragIcon DragMode Enabled 和 Visible。
许多 TreeView 特定属性可以在设计时在 TreeView 控件上单击鼠标右键调出的 TreeView 控件属性表中设置。
包括 Style LineStyle Indentation PathSeparator 和 HideSelection。
在属性表中可编辑的属性中 你最需要改变其默认值的是: Style: 指明 TreeView 控件显示什么。
可以选择是否显示图像线条 加号/减号等。
LineStyle: 指明显示根线。
如果没有设置该属性为 1-根线 无论 Style 是如何设置的顶级对象上都不会有加号/减号标记。
LabelEdit: 如果你不想让用户修改各节点上的文本 设置该属性为 1-手动。
ImageList: 一个 ImageList 控件对象引用它包括了控件中的节点使用的图象 参见本文 ImageList 一章中关于该简单控件的说明。
不幸的是该属性不能可视化地进行设置 你必须以编程方式用代码进行设置象下面一样在表单的 Init 方法中: This.oTree.ImageList This.oImageList.Object 注意你需要在表单的 Init 事件中而不是 TreeView 的 Init 事件中进行上述设置 因为 TreeView 可能会在 ImageList 之前实例化 如果这样试着设置 ImageList 属性为一个尚不存在的对象将会失败。
同时 注意上述代码中的”object” 关键字 这是必须的。
Indentation: 子节点缩进多少。
HideSelection: 如果没有关闭这一选项 当 TreeView 控件失去焦点时选定节点不会保持高亮度。
这很容易把用户糊涂。
Font: 用于节点文本的字体名字 字号和字型。
该属性可从属性表中修改注意帮助文件中说明了 ScrollBars 属性 但没有该属性: DropHighlight: 该属性用于支持TreeView 控件的 DragOver 事件 因此可以在鼠标经过一个节点时高亮显示该节点。
但是 这只会在
VFP 6 中的版本 6 的 TreeView 使用 Visual FoxPro 的 ActiveX 控件 第 9 页 控件中才实现了 在老版本的控件中设置该属性为节点对象时会引发一条”类型失配” 错误。
在这种情况下 要达到同样目的可用 HitTest 来检查鼠标经过的是哪一节点并设置该节点的 Selected 属性为 .T. TREEVIEW 示例表单在 DragOver 事件中使用了该技术。
Nodes: 控件中的节点集合引用。
SelectedItem: 当前选定节点对象的引用。
节点集合方法 以下是TreeView 控件的节点集合的方法被指定的 ltObjectgt.Nodes 引用 其中 ltObjectgt 是 TreeView 控件名: Add: 添加一个新节点并返回它的引用。
它使用以下语法: ltObjectgt.Nodes.AddRelative Relationship Key Text Image SelectedImage 其中: Relative: 一个已存在节点的索引或键值。
如果未指定 新节点放在顶级节点的末端。
Relationship: 新节点放置的相对于第一个参数中指定的节点的位置可以是以下值: 1: 节点放在相对节点所在级的所有节点的末端。
2: 节点放在相对节点的后面。
3: 节点放在相对节点的前面。
4: 节点成为相对节点的子节点。
Key: 用于指明节点的唯一串。
如果显示内容是从一个表的记录中载入的 可使用记录的主关键字段值 如果不是字符型的还需要转换为字符型。
.
上一篇:
江苏省计算机vfp二级等级考试2008年春季江苏二级VFP考试真题
下一篇:
法律专业开题报告范文