在delphi中,怎样实现像输入法一样的预选,就是我向edit中输入汉字拼音简码,它出现像输入法一样的
一个框,里面出现我从库里检索到的相应简码的字段名,比如:我的库里有电教一室,电教二室、电教三室当我在edit中输入dj,上面三个就出现在一个提示框中,我再键入y,也就是在edit中为djy则提示框中只出现电教一室,怎么实现!谢谢各位!

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/2377/2377737.xml?temp=.1326868
      

  2.   

    hmzgz81(哩翱:    谢谢!我的库都建好了,拼音简码也都好了!~现在就是怎样输入,不知道当edit获得焦点时,那个提示框是怎样创建的,用什么?我试了listbox,不太行,不知用什么比较好!有没有实例?
      

  3.   

    listbox为什么不行?查询出的结果加入listbox里,然后点选就放入edit里,为什么不行?
      

  4.   

    就是他每次都问我MyListBox已经初始化,并报错procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    var
      MyListBox:TlistBox;
      S:String;
    begin
      S:='%';
      with Mydata.AdoQuery1 do
      begin
        close;
        Sql.close;
        Sql.add(Format('Select DwName From Dic Where Ji like ''%s%s%s''',[s,edit1.Text,s]));
        open;
      end
      While not Mydata.adoQuery1.Eof do
      begin
      MyListBox.Items.Add(Mydata.AdoQuery1.FieldByName('DwName').Asstring);
      Mydaya.adoquery1.Next;
      end
    end;好像还要加什么,拿不定!
      

  5.   

    看看EDIT不是有IMEMODE/IMENAME两个属性么
      

  6.   

    MyListBox 没有创建将 MyListBox 声明放在 Edit1 的声明部分,与 Edit1 一起创建
      

  7.   

    我曾经写过一个输入法的程序实现了类似的功能,
    你可以把一下格式内容存入一个数据表
    编码  名称
    --------------
    djy   电教室1
    dje   电教室2
    djs   电教室3然后,根据输入在Edit中的内容对数据进行过滤,(可以用Table的Filter属性)数据可以显在DBCtrlGrid上,其他部分你自己想办法修饰,如动态改变位置等
      

  8.   

    1.不需要建库
    2.使用窗口而不是ListBox