例如,有十个不同名称的FORM(窗体),窗体名称赋值给了字符串变量,
如何引用这些窗体下的属性,方法?

解决方案 »

  1.   

    你想问什么?
    是要用你的字符串变量引用对象的属性吗?这是不可能的!1、你需要重新理解对象的含义(找本书好好看看定义)2、你需要这样定义一个变量
    Dim [变量名] As [对象或对象名]  '
    然后用set赋值
      

  2.   

    to pickitup()这么说吧!
    我在数据库中放了很多窗体的名称!
    我现在要操作这些窗体,而窗体名称保存在数据中是字符型的,取出来后只能赋值给一个字符串变量,我是想通过这个变量来完成对窗体本身的操作!
    比如:  dim sStr as string 
            
            sStr="frmDeptSet"    'frmDeptSet为窗体名称
            现在能否通过sStr来完成对窗体的操作
            sStr.WindowState = vbMaximized有一个函数CallByName,
    CallByName函数是返回对象的属性,不能返回对象本身。所以这个也不行!
      

  3.   

    to EisenHammer:
      
     那你能用什么方呢?因为在数据库中存的也是字符串,不可能把每个窗体对象放到数据库中吧!有没有什么API 什么的,可能执行一行VB语句的。
     如果有的话,就可以写出这样
       dim sTmpStr as string
       sTmpStr= sStr & ".windowState=vbMaximized"
       然后
       call  执行(sTmpStr)
       类似于Execute做远程操作一样的语句
      

  4.   

    这个是属于动态创建的问题。
    即使是使用VC也不会有更好的解决办法,除了Select case
      

  5.   

    由于对象的name属性运行中只读,而且没有指针,也还没想到怎样可以使两个变量公用同一个对象实例,所以麻烦一点,使用分支选择语句,对每一个选择进行一次判断(用你定义的sSTR变量的值判断),然后分别实现对对象的操作。
      

  6.   

    控件可以使用callbyname创建,窗体不能。
      

  7.   

    用SELECT CASE 肯定是没有问题,但是
    功能模块由用户创建,数据表由用户创建,窗体也应该由用户创建,用户可以定义数据表名称,可以定义窗体名称。
    SELECT CASE 是不能实现的,因为你事先不知到窗体名称!如果用一个窗体数组不知可不可以!