设为首页
加入收藏
联系站长
首页 | 新闻 | 新书 | 专家 | 技巧 | 源码/作品 | 工具/资源 | 商城 | 风采 | 留言 | 论坛 | 网址 | 承接 | 

  没有公告

 您现在的位置: Access/Office中国 >> Office中国/Access中国图书 --《专家门诊——Access开发答疑200问》 
专家门诊——Access开发答疑200问书籍介绍


Office中国/Access中国 图书 Access图书 专家门诊——Access开发答疑200问  总述 经典赏析 目录 光盘内容 常见问题 实例更新 讨论 联系       人气:


New Page 1
   本 书 经 典 内 容 赏 析 
      如何实现左右移动项目的列表框 如何实现通用的Office Xp按钮界面效果
      如何编写传递多个参数给窗体和报表的函数 如何设计可定定义流程图的程序
      如何读取使用插入对象插入的OLE字段的内容 通用的窗体页眉与页脚
   书中其它经典内容
136 如何将数字金额转换为中文金额 66 如何实现带树形结构的组合框和列表框 68 如何实现通用的窗体页眉与页脚 205 能否修改MDE文件窗体和报表的属性 168 如何设计可定定义流程图的程序 81 报表中如何屏蔽零值 163 如何实现拖拉的treeview 166 如何原样打印Treeview中的内容 138 如何将中文字符串转换为首位拼音码 213 不使用第三方控件,如何实现繁简转换 137 如何将西文日期转换为中文日期格式 142 如何自动刷新链接表 150 如何让窗体打开得更快一些 210 如何读取使用插入对象插入的OLE字段的内容 206 Access两个未公开的方法 161 如何用代码创建自定义的工具栏 175 如何实时添加新的字体 176 如何将窗体放到系统托盘里 178 如何使用使用API设置窗体总在最前 190 如何实现窗体的位置自动跟随光标移动 200 如何防止他人导入导出数据库对象 203 如何避免数据库损坏 204 为什么要生成MDE及生成MDE的注意事项 162 如何设置listview控件的各种属性 215 如何判断数据库实例是否已打开 211 如何转换窗体中所有命令按钮控件为标签控件且保留原有事件 70 如何实现控件自动适应窗体的大小 71 如何实现在不同窗体视图有不同显示效果的窗体 212 如何自动添加指定的代码到各个窗体的事件中 217 如何自动拆分长SQL 语句字符串 218 如何调用帮助文件 219 如何限制程序使用次数和使用天数 221 如何打开另一个MDB文件并跳过启动窗体 223 如何为MDB和MDE设置两种不同的退出系统的方式 224 什么是标准的对象命名规则 225 什么是良好的代码注释规范 227 开发大型软件流程 212 如何自动添加指定的代码到各个窗体的事件中

168

如何设计可自定义流程图的程序 适用版本:97、2000、2002、2003
人气 95% 难度系数 ****
问题详述
       现在用户对软件的要求越来越多,越来越复杂,而且也越来越多变,并且随着企业的规模不断扩大,企业的业务流程也会发生变化,但是设计一个软件系统需要比较长的时间和花费比较多的精力,如果因为业务流程的改变而经常去修改程序代码,那可能会疲于奔命,能否设计一个可让用户自定义流程图的程序?
专家解答(详细代码请参见本书内容)
       Access本身不提供制作流程图的功能,但可以通过第三方控件Addflow来实现这个功能,AddFlow是lassalle公司出品的专业流程图制作的Activex控件,支持大多数常见流程图样式,允许快速创建流程图应用程序。通过它可以为每个流程图中的对象(节点或者连接线) 分配不同的颜色,字体,形状,风格,图片,文字等,它的功能非常类似于Visio,而且它提供了作为ActiveX控件的接口,可以通过VBA代码对它进行灵活的控制。
    首先创建一个窗体,在窗体上添加一个列表框和一个Addflow控件,列表框用于显示当前系统的功能窗体项目,Addflow控件用于用户自定义流程图,并可运行这个流程图,单击流程图上的节点可打开相应的窗体。流程图中的节点位置以及连接线可让用户完全自由定义和设计。
然后为流程图及列表框添加相应的代码,以实现添加流程图节点,单击节点打开相应窗体等功能。详细代码如下。
详细代码如下。
Private Sub Form_Load()
'初始化流程图
With flwMain
lstProgItem.SetFocus
.SnapToGrid = True
.CanSizeNode = True
.ArrowDst = 3
End With

End Sub
单击运行按钮,设置流程图的其它属性

Private Sub chkRun_Click()
If chkRun.Value <> 0 Then '如果是运行状态,设置流程图的相应属性,不允许设计
With flwMain
.EditMode = afEditNone
.CanDrawNode = False
.SelectMode = False
.CanMoveNode = False
.CanSizeNode = False
.DisplayHandles = False
.ShowPropertyPages = afShowNone
End With
Else '如果是设计状态,设置流程图的相应属性,允许拖动及设计
With flwMain
lstProgItem.SetFocus
.SnapToGrid = True
.CanSizeNode = True
.CanMoveNode = True
.SelectMode = True
.DisplayHandles = True
.ShowPropertyPages = afShowAll
.EditMode = afEditMouseClick
.ArrowDst = 3
End With

End If
End Sub

Private Sub lstProgItem_DblClick(Cancel As Integer)
Dim nodx As afNode
With flwMain
Set nodx = .Nodes.Add(60, 60, 1300, 450)
nodx.FillColor = 8421504 ' RGB(255, 255, 192)
nodx.Text = lstProgItem.Column(1, lstProgItem.ListIndex)
nodx.Tag = lstProgItem.Column(0, lstProgItem.ListIndex)
nodx.ToolTip = lstProgItem.Column(2, lstProgItem.ListIndex)
nodx.Sizeable = True
nodx.Shape = afRectangle ' afRectEdgeRaised
nodx.BackMode = afBackModeTransparent
nodx.DrawStyle = afTransparent
nodx.Shadow = afNoShadow
nodx.Transparent = True

Set nodx.Picture = LoadPicture(CurrentProject.Path & "\" & Right(nodx.Tag, 1) & ".ico")

End With
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'为了保证窗体能够截获到键盘事件,需要将窗体的键预览属性设置为真
If KeyCode = vbKeyDelete Then
flwMain.DeleteSel '按删除键时删除流程图中的对象
End If
End Sub

Private Sub flwMain_Click()
On Error GoTo TC_Err
If chkRun.Value <> 0 Then '只有在运行状态才可打开相应窗体
Dim node As afNode, s As String
Dim Func As String, mdl As String
Set node = flwMain.SelectedNode '获取当前选中的节点对象
If node Is Nothing Then Exit Sub

If Not IsNull(node.Tag) And node.Tag <> "" Then
mdl = node.Tag '获取窗体名称
DoCmd.OpenForm mdl '打开相应的窗体
Exit Sub
End If
End If

Exit Sub
TC_Err:
MsgBox Err.Description
Exit Sub

End Sub

   

发表评论】【告诉好友】【打印此文】【关闭窗口
  网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
处理 URL 时服务器出错。请与系统管理员联系。