您的位置:程序门 -> vb -> 基础类



如何将字符串变量转为控件名称,对相应控件进行操作


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何将字符串变量转为控件名称,对相应控件进行操作[已结贴,结贴人:dreamia]
发表于:2007-01-17 17:48:02 楼主
我希望能够写一个搜索功能的公用窗体,别的地方可以调用这个窗体,并把调用位置通过字符串变量tg告诉它。这个窗体操作完,将结果返回给调用位置。
例如,字符串tg= "frmmain.txtfilename ",表示是frmmain窗体的txtfilename调用搜索窗体。那么搜索窗体应该把结果返回给frmmain.txtfilename。
这个结果(或者说对调用位置的操作)可能比较复杂,我希望能有一个简单的办法,比如js语言的eval(字符串变量)这样的方式。vb里面是否有对应的语法?谢谢!
发表于:2007-01-17 17:58:381楼 得分:10
option   explicit  

private   declare   function   ebEXECuteline   lib   "vba6.dll "   (   _  
byval   pstringtoEXEC   as   long,   _  
byval   unknownn1   as   long,   _  
byval   unknownn2   as   long,   _  
byval   fcheckonly   as   long)   as   long  

private   sub   form_load()  
ebEXECuteline   strptr( "dim   a   as   long,b   as   long,c   as   long "),   0,   0,   0  
ebEXECuteline   strptr( "a= "   &   3),   0,   0,   0  
ebEXECuteline   strptr( "b= "   &   5),   0,   0,   0  
ebEXECuteline   strptr( "c= "   &   2),   0,   0,   0  
ebEXECuteline   strptr( "clipboard.settext   (a+b)/c "),   0,   0,   0  
msgbox   clipboard.gettext  
end   sub

发表于:2007-01-18 09:40:092楼 得分:0
dim   chkbox   as   checkbox
set   chkbox   =   me.controls.add( "vb.checkbox ",   "chkname ")

不知道是不是这意思
发表于:2007-01-18 10:09:193楼 得分:0
public   sub   search(searchstr   as   string)
        dim   splitstr()   as   string
        dim   frmname   as   string
        dim   controlname   as   string
        dim   obj   as   object
        dim   frm   as   object
       
        splitstr   =   split(searchstr,   ". ")
        frmname   =   splitstr(0)
        controlname   =   splitstr(1)
       
        for   each   frm   in   forms
                if   frm.name   =   frmname   then
                        for   each   obj   in   frm.controls
                                if   obj.name   =   controlname   then
                                        obj.text   =   "ok "
                                        exit   for
                                end   if
                        next   obj
                        exit   for
                end   if
        next   frm
end   sub

调用方法:公用窗体.search( "frmmain.txtfilename ")

这里只考虑text控件,其他控件只需用   typeof判断类型后区别对待就可以了
发表于:2007-01-18 10:30:594楼 得分:0
楼上两位误解了我的意思!
我是想把字符串传递给一个窗体,由窗体来执行相应代码。代码可能很复杂,单纯用循环判断或者if之类的是不顶用的。我需要的是类似asp里面的语法:excute(字符串)这样的方式。

zyg0(影子(加班,加班,再加班):
ebEXECuteline   strptr( "dim   a   as   long,b   as   long,c   as   long "),   0,   0,   0
我要的就是这样的,这个ebEXECuteline   能否具体说一下?感觉这个比较接近我的要求!
它是否要调用其他库,或者是自定义函数?
发表于:2007-01-18 10:34:235楼 得分:0
这个是api和eval类似   声明放在模块中就行
发表于:2007-02-01 15:19:236楼 得分:0
to   zyg0(影子(加班,加班,再加班)
我采用了您的方法,在设计过程中一切正常,但是生成了exe后,执行时提示找不到vba6.dll,然后程序就自动关闭,这是为什么,应该怎样处理?
发表于:2007-02-01 15:27:097楼 得分:0
打包必须把vba运行库打进去
发表于:2007-02-01 15:27:318楼 得分:0
vba6.dll
发表于:2007-02-01 17:09:579楼 得分:0
我将vba6.dll复制到工程所在的目录下,但是一旦执行到运行ebEXECuteline的地方,程序就自动关闭!why?


快速检索

最新资讯
热门点击