比如在vb中,输入text1后,按“.”后会弹出text1想对应的属性或方法、事件,如果我要在自己编写的一个小程序中实现这个功能,可以通过什么途径?请各位指教,因为,我想编写一个java程序的编辑器,(或vbscript、javascript编辑器。)最好有例子,高分相送。我想,可以使用sendmessage函数,可思路总不清晰,基本卡壳了,拜托了!!!!!!

解决方案 »

  1.   

    哦,补充说明:编程环境:visual basic6;操作系统:win 2000。我不会.net,见笑了。
      

  2.   

    哇,这个有难度哦你看这样行不行你先把对象的各种属性放进一个listbox里,比如text1的属性有font,text,height,width等
    把listbox隐藏起来,当用户在代码编辑区输入对象名称时,如text1,如果再输入一个“.”,就让listbox显示出来,并move到合适的位置,还要把焦点给listbox,因为下面用户还要对listbox操作,用户选中其中一项后,如果点击了listbox或在listbox中按了空格键,则把被选中的项,比如“font”,用seltext方法添加进代码编辑区。。
      

  3.   

    在TEXT的CHANGE事件中写代码,判断用户输入的最后一个字符是否".",如果是的话就用一个LIST控件显示提示内容。
      

  4.   

    在TEXT的CHANGE事件中写代码,判断用户输入的最后一个字符是否".",如果是的话就用一个LIST控件显示提示内容。
    ==============================================
    这样子效率太低,假如有3行代码
    text1.text="1"
    text1.
    text1.text="3"
    我在第二行那里.的话岂不是获取不到"."
    可以用KeyPress事件获取,再用
    BlueBeer(1win) 的想法就ok了,我做过了 Java的编辑器了,还带了语法加亮,现在我们学校学java大家都用我的,老师也是.    骄傲  :P
      

  5.   

    楼上给的方法太太太幼稚了吧。一个类,你怎么知道它里面有多少公用的属性及方法,你能保证用户所用的类都是你编程前已知的么。正确的解决方法是:该问题比较困难。但是用COM可以解决,建议楼主去看看COM的书。里面有一些接口。
      

  6.   

    COM是OLE技术的基础,它规定了对象之间如何相互通讯,符合COM规范的对象也叫做COM 对象。按照COM的规定,对象内部可以使用任何语言来编写,它们通过接口(Interface)来与外界通信。所谓接口是指对象提供的一组特定的功能调用(方法),每个对象可以有多个接口,不同的对象可以实现同一种接口,客户程序通过对象的接口指针来调用对象的功能。由于 OLE规定了组件在二进制级上可重用,客户程序不能够直接访问对象内部的数据,读取或设置对象的属性也都要通过接口来进行。每一种接口都是从一个叫IUnknown接口继承而来,都必须重新实现IUnknown的三个方法:QueryInterface、AddRef和Release,客户程序调用Query Interface可以获得对象的其它接口指针,AddRef和Release分别将对象的引用计数加一和减一,当引用计数为零时,对象就会被释放。客户程序调用COM对象的一般步骤是首先创建一个对象,然后获取需要的接口指针,调用相应的功能,最后释放接口指针和对象。 
      

  7.   

    跟com关系不大。。
    其实vc/vb里面的智能语法提示是挺牛鼻的,至少,别的公司比如borland公司的语法提示器和微软的就没法比
      

  8.   

    我在做编辑器的全部思路是这样的:
    (其中语法加亮,与接受 . 的方法就不用说了吧)
    检测代码
    发现有 public class 的字样时就自定义添加一个属性方法列表(可以用数组形式在内存中寄放),然后在该类里编辑时再根据类里的代码动态获取到该类的属性方法集合,更新该属性方法列表
    同时该类有个附属列表,存放定义为该类型的所有变量名的相关信息
    然后当类似 theClass A=new theClass; 时就在该附属列表里添加 A 的信息.在后面的编辑过程中获取到 . 时就找出 . 之前的"变量"所属类型,并用 ImageList 显示该类型的所有方法和属性.
    就可以解决"回复人: LGYAN(紫衣随想) ( ) 信誉:89 "说的"楼上给的方法太太太幼稚了吧。一个类,你怎么知道它里面有多少公用的属性及方法,你能保证用户所用的类都是你编程前已知的么。"问题.另外如果想新增像VB里的 Sub A( 后会自动提示参数信息功能的话也同理,动态保存函数头
    如"String subname(int i, int j)",一样的道理.总之要点就是边编辑边获取边更新这是我的思路
      

  9.   

    TO 664email(林惊) 
    我就真的纳闷了?如果一个没有源代码的(已编译完的类),你凭什么去分析是否有多少公有属性及方法。你凭什么去找Public字样? 
    你做的JAVA的类有源代码,你当然可以去分析。如果没有源代码,你分析什么啊?
      

  10.   

    vb里应该是在keypress事件中执行的,不是change事件,估计用的是钩子一类的东西
      

  11.   

    我在做编辑器的全部思路是这样的:
    (其中语法加亮,与接受 . 的方法就不用说了吧)
    检测代码
    发现有 public class 的字样时就自定义添加一个属性方法列表(可以用数组形式在内存中寄放),然后在该类里编辑时再根据类里的代码动态获取到该类的属性方法集合,更新该属性方法列表
    同时该类有个附属列表,存放定义为该类型的所有变量名的相关信息
    然后当类似 theClass A=new theClass; 时就在该附属列表里添加 A 的信息.在后面的编辑过程中获取到 . 时就找出 . 之前的"变量"所属类型,并用 ImageList 显示该类型的所有方法和属性.
    就可以解决"回复人: LGYAN(紫衣随想) ( ) 信誉:89 "说的"楼上给的方法太太太幼稚了吧。一个类,你怎么知道它里面有多少公用的属性及方法,你能保证用户所用的类都是你编程前已知的么。"问题.另外如果想新增像VB里的 Sub A( 后会自动提示参数信息功能的话也同理,动态保存函数头
    如"String subname(int i, int j)",一样的道理.总之要点就是边编辑边获取边更新这是我的思路
    ----------------------------------
    那你考虑过类继承吗??虚类?? 如果是控件你又杂处理?? 还有基础类库那么大,你也先解析了放在内存??总之还有很多细节啊
      

  12.   

    "TO 664email(林惊) 
    我就真的纳闷了?如果一个没有源代码的(已编译完的类),你凭什么去分析是否有多少公有属性及方法。你凭什么去找Public字样? 
    你做的JAVA的类有源代码,你当然可以去分析。如果没有源代码,你分析什么啊?""那你考虑过类继承吗??虚类?? 如果是控件你又杂处理?? 还有基础类库那么大,你也先解析了放在内存??总之还有很多细节啊"惭愧!的确是有这个问题,我还没有找到最有效的方法,我对控件方面的处理还没有完全解决,我只是将以知控件和基类库的信息放到了一个数据库里(当然还没有全部),类继承这些问题只要已知父类和子类,也可以解决问题。
      

  13.   

    看你要达到什么目的了!如果只是对自己写的代码进行分析,那问题不是很大,如果要对已编译好的控件进行分析,那就不是那么简单.多看看编译原理吧!对你写语法分析相关的程序有帮助!用正规表达式来分析不错!用过EditPlus吗?它里面有个Function List的功能,就是列出你当前正在编辑的程序的所有函数.它用的就是正规表达式!