Office中国论坛/Access中国论坛

标题: 能否获取一个mde文件中的所有 form 的名称以及其他属性? [打印本页]

作者: cg1    时间: 2002-10-16 16:29
标题: 能否获取一个mde文件中的所有 form 的名称以及其他属性?
能否获取一个mde文件中的所有 form 的名称以及其他属性?

我看到一个mde 文件非常漂亮,我要在自己的窗体中直接调用mde文件的所有属性包括forecolor font size backcolor tag 等等等,是否能办到?
作者: zhengjialon    时间: 2002-10-16 18:32
既然锁定了,要能就不行了。
作者: cg1    时间: 2002-10-16 19:19
我不修改,只是要取得这些属性
另外,mdb文件可以吗?
作者: zhengjialon    时间: 2002-10-16 19:46
mdb中可以引用自定义函数,例如引用北风中的ISLOAD,在引用中按正常引用就可以了。
作者: cg1    时间: 2002-10-16 22:05
我是说调用一个外部MDB文件中的 FORM 的各种属性,没说MDB自身阿
作者: cg1    时间: 2002-10-17 05:07
谁知道阿?
作者: tmtony    时间: 2002-10-18 01:30
用一个MDB打开此MDE, 然后循环所有窗体及所有属性,除已编绎的代码外,其它几乎所有属性都可找出来
作者: cg1    时间: 2002-10-18 03:05
我可以用 currentproject.allforms.item(i).name
currentproject.Properties(i).name 来显示这些内容
用另一个数据库怎样才能显示 currentproject.allforms.item(i).name currentproject.Properties(i).name

作者: rofan    时间: 2002-10-18 03:14
真是大哥!
  我统统看不懂——————-——-——


         来个例子的了
作者: tmtony    时间: 2002-10-18 03:16
创建一个对象createobject("access.application")
再用它打开MDE,再循环所有对象allforms,allreports...如果无法取到窗体或报表里面控件的属性,可先用application.docmd.openform  打开这个窗体,再循环所有控件的所有properties, 如果是mdb.可判断窗体和报表的havmodule属性,为真可显示所有代码,如果是MDE或代码VBA加密,则做错误陷阱,基本上一个可用代码重造一个与原来的MDE界面类似的MDB出来,但代码除外。
作者: cg1    时间: 2002-10-18 04:05
你是说用 opencurrentdatabase 或者 openaccessproject 在创建后的access.application中做吗?

这个我已经实现了,可惜不太好,要同时打开2个数据库窗口,很麻烦,我现在想直接用另一个mdb上的窗体的所有属性覆盖本身窗体上所有的属性,这样就可以创造一种新的风格,但是我不要每次都打开一个新的 access 界面,很慢,而且难看
不知老大有否办法?
作者: cg1    时间: 2002-10-19 20:41
再问

还是没有彻底解决
作者: cg1    时间: 2002-10-21 05:53
hello ,难道就再也没有人知道了?
不知道也跟个帖子嘛!让我好知道多少人不知道,到时候解决了也好公布阿
再问

还是没有彻底解决

作者: gnoy    时间: 2002-10-21 06:08
以下是向Trynew讨来的,我就来个借花献佛吧,希望对你有所帮助。

gnoy兄,你好,用上刚看到的一句话:
第一、我不会,第二、就算我会我也不会去做,第三、就算我会去做我也不告诉你... ...

开个玩笑,首先多谢你的来信,启发了我。我原来也弄过一下动态生成窗体,不过挺烦,又觉得意义不大:Access本来就可随时修改,难道你还能让用户去设计窗体?就作罢了,只搞了个选定数据源自动生成Temp窗体的程序,作些修改以后放到论坛上去。另外,对于一个程序(包括Mde),第一是创意和用途,第二是技术和算法实现,第三才是界面,并且界面一定要有统一的(自己)风格。对于Mde文件,把它界面复制出来没啥意思。
这只是我的个人看法。欢迎你多点来信交流,友好冻死别忘告诉我一声。

下面这段小程序(从帮助里抄的)不知能否对你有点帮助


Dim appAccess As Access.Application

Sub OpenForm()
Dim strConPathToSamples As String
Dim frm As Form
' 将字符串初始化为数据库的路径。
strConPathToSamples = CurrentProject.Path & "\Source.mde"
' 创建 Microsoft Access 的实例。
Set appAccess = _
CreateObject("Access.Application")
' 在 Microsoft Access 窗口中打开数据库。
appAccess.OpenCurrentDatabase strConPathToSamples
'appAccess.Visible = True
' 打开“Orders”窗体。
appAccess.DoCmd.OpenForm appAccess.CurrentProject.AllForms(0).Name
Set frm = appAccess.Forms(appAccess.CurrentProject.AllForms(0).Name)
ListControlProps frm
End Sub

Sub ListControlProps(frm As Form)
Dim ctl As Control, prp As Property

On Error GoTo props_err
For Each ctl In frm.Controls
Debug.Print ctl.Properties("Name")
For Each prp In ctl.Properties
Debug.Print vbTab & prp.Name & " = " & prp.Value
Next prp
Next ctl

props_bye:
Exit Sub

props_err:
If Err = 2187 Then
Debug.Print vbTab & prp.Name & " = Only available " _
& "at design time."
Resume Next
Else
Debug.Print vbTab & prp.Name & " = Error Occurred: " & Err
Resume Next
End If
End Sub

另:
Trynew兄,我这“先斩后奏”不会怪我吧



作者: cg1    时间: 2002-10-21 06:14
以下是引用cg1在2002-10-17 20:04:42的发言:
你是说用 opencurrentdatabase 或者 openaccessproject 在创建后的access.application中做吗?

这个我已经实现了,可惜不太好,要同时打开2个数据库窗口,很麻烦,我现在想直接用另一个mdb上的窗体的所有属性覆盖本身窗体上所有的属性,这样就可以创造一种新的风格,但是我不要每次都打开一个新的 access 界面,很慢,而且难看
不知老大有否办法?


我已经说过了,上述办法早在我发贴前就完成了,我的要求并不止于此,请看上述引用

还有其他人知道吗?
作者: xinbao    时间: 2002-10-22 21:02
肯定要用某种方法打开它,才能取得名称和属性吧!但要是打开,显不显示都是慢哦,appliacation创建时是不可见的
作者: cg1    时间: 2002-10-23 02:13
application创建的确不可见,但打开数据库是可见的而且速度慢,有没有办法像在workspace打开 database一样比较快比较隐蔽的办法




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3