delphi 模糊查询(输入字母后出现小窗体,并根据字母过滤),该如何处理

delphi 模糊查询(输入字母后出现小窗体,并根据字母过滤)
小弟新手,在自学中
如标题所示,应该怎么实现这种功能呢?需要用哪个组件,希望各位师兄多关注小弟,求详细解释。
感激不尽

下理想效果附图

delphi 模糊查询(输入字母后出现小窗体,并根据字母过滤),该如何处理
------解决方案--------------------
关于那个根据拼音模糊查询的问题也不困难,输入的那些应该是基础信息吧,你可以在录入那些基础信息的时候直接获得到全拼和简拼,这样就可以了,3楼的方法也可以,但是效率应该会差一些
------解决方案--------------------
汉字转换成拼音

function   GetHzPy(const   AHzStr:   string):   string;
const
  ChinaCode:   array[0..25,   0..1]   of   Integer   =   ((1601,   1636),   (1637,   1832),   (1833,   2077), 
      (2078,   2273),   (2274,   2301),   (2302,   2432),   (2433,   2593),   (2594,   2786),   (9999,   0000),
      (2787,   3105),   (3106,   3211),   (3212,   3471),   (3472,   3634),   (3635,   3722),   (3723,   3729), 
      (3730,   3857),   (3858,   4026),   (4027,   4085),   (4086,   4389),   (4390,   4557),   (9999,   0000),
      (9999,   0000),   (4558,   4683),   (4684,   4924),   (4925,   5248),   (5249,   5589)); 
var 
    i,   j,   HzOrd:   integer; 
begin 
    i:=   1;
    while   i   <=   Length(AHzStr)   do 
    begin 
        if   (AHzStr[i]   >=   #160)   and   (AHzStr[i   +   1]   >=   #160)   then
        begin 
            HzOrd   :=   (Ord(AHzStr[i])   -   160)   *   100   +   Ord(AHzStr[i   +   1])   -   160;
            for   j   :=   0   to   25   do
            begin
                if   (HzOrd   >=   ChinaCode[j][0])   and   (HzOrd   <=   ChinaCode[j][1])   then
                begin
                    Result   :=   Result   +   char(byte( 'a')   +   j);
                    break;
                end;
            end;
            Inc(i);
        end   else   Result   :=   Result   +   AHzStr[i];
        Inc(i);
    end;
end;