我有个文本文件,格式就象这样的:
ABDDPLLL氨苯喋啶片★●※                        1601747TA1
ABDZPL  阿苯达唑片※                            0303154TA1
ABLSLL  爱宝疗栓☆○                            1906001SP1
ABLYLL  爱宝疗液☆○                            1906001SL1
ABMS    阿波莫斯                                9999386YB1
ABQMSZDA氨苄青霉素针(氨苄西林)★●※          0101003IJ1
ABTDBZBT阿贝他(苯扎贝特片)☆○                1504729TA1
ABWP    安博维片                                9999131YB1
ABXJN   氨必仙胶囊                              0101003CP1
ABXLNLZX氨苄西林钠氯唑西林钠                    0101031IJ1
ABZDYBLS艾本针(伊班瞵酸钠)☆○                1499646IJ1
我需要把这个文本文件读取到DEPHI中的一个控件中,然后我通过输入前面的药品名称拼音缩写,取出药品的名称.
这个控件用什么比较好,然后怎么样按拼音缩写取出药品的名称.

解决方案 »

  1.   

    edit就可以了,拼音缩写的话需要dll
      

  2.   

    有拼音缩写用什么DLL啊,那个控件我用的是LISTBOX.怎么能通过拼音缩写定位到那个药品,并取出来
      

  3.   

    首先把文本文件读到listview里,分成三列,第一列拼音缩写,第二列药品名称,第三列是号码
    那么我们只要通过查找在第一列指定的拼音缩写的项,那就可以轻而易举的把药品名称取出来
      

  4.   

    用richedit 有内置的查找函数,实现这个要不了几行代码
    窗体上放一个edit用来接收输入,一个rich edit 载入文本内容
    如果在edit中输入了字符,就调用rich edit的查找
    代码就三五行吧
      

  5.   


    给你做了一下,可要多多地给我分哟!
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ComCtrls;type
      TForm1 = class(TForm)
        ListView1: TListView;
        Button1: TButton;
        Edit1: TEdit;
        Button2: TButton;
        Label1: TLabel;
        procedure Button1Click(Sender: TObject);
        procedure AddItem(str:string);
        function FindItem(str:string):integer;
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
    ss:TStringlist;
    i:integer;
    begin
    ss:=TStringlist.Create;
    ss.LoadFromFile('c:/11.txt');
    for i:=0 to ss.Count-1 do
      AddItem(ss[i]);
    ss.Free;
    end;procedure TForm1.AddItem(str: string);
    var
    i,len:integer;
    a,b,c:string;
    begin
    len:=length(str);
    for i:=1 to len do if not(str[i] in ['A'..'Z']) then
       begin
       a:=copy(str,1,i-1);
       delete(str,1,i-1);
       break;
       end;
    str:=trim(str);
    i:=pos(' ',str);
    b:=copy(str,1,i-1);
    delete(str,1,i-1);
    c:=trim(str);
    with ListView1.Items.Add do
      begin
      Caption:=a;
      SubItems.Add(b);
      SubItems.Add(c);
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
    i:integer;
    begin
    i:=FindItem(edit1.Text);
    if i>-1 then
       showmessage('找到了,药名为:'+ListView1.Items[i].SubItems[0])
       else
       showmessage('没找到');
    end;function TForm1.FindItem(str: string): integer;
    var
    i:integer;
    begin
    result:=-1;
    str:=trim(UpperCase(str));
    if str<>'' then for i:=0 to ListView1.Items.Count-1 do
       if str=ListView1.Items[i].Caption then
          begin
          result:=i;
          break;
          end;
    end;end.