弹出下拉框,显示相应地址。

解决方案 »

  1.   

    把这些东西写入注册表,每次启动程序把注册表中的内容读取到ComboBox中去
      

  2.   

    严重关注,我正要做这个效果,可惜想到的方法比较笨,
    就是用文件或者数据库来保存以前的输入,然后在你每键入一个
    新的字母是检查以前列表(可使用一个Tstringlist来临时保存),
    然后就是onkeypress事件了
    每输入一个字符,检查整个列表与当前列表的中每一项局部内容是否
    匹配,然后聚焦在最匹配的上面,用户输入tab键,就修改地址
      

  3.   

    可以将数据写入一个表中,然后再写入Combobox等不就可以了
      

  4.   

    难点不在这,Combobox有一些自动操作使之完全达不到效果。
      

  5.   

    unit lyt1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, DBTables, Grids, DBGrids, StdCtrls, DBCtrls;type
      TForm1 = class(TForm)
        Label1: TLabel;
        Edit1: TEdit;
        Query1: TQuery;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        Database1: TDatabase;
        Label2: TLabel;
        Memo1: TMemo;
        ComboBox1: TComboBox;
        Button1: TButton;
        DBComboBox1: TDBComboBox;
        procedure Edit1Change(Sender: TObject);
        procedure Edit1KeyDown(Sender: TObject; var Key: Word;
          Shift: TShiftState);
        procedure ComboBox1Change(Sender: TObject);
        Procedure ComboBoxQuery();
        procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      Count: Integer;implementation{$R *.dfm}procedure TForm1.Edit1Change(Sender: TObject);
    var Sqlstr : string;begin
      Sqlstr := 'SELECT DISTINCT DeviceInf.DeviceAddr as 站点地址,DeviceInf.SiteId as 站点序列号';
      Sqlstr := Sqlstr + ' FROM DeviceInf  where DeviceAddr <>'+#39#39' and (DeviceAddr like ';
      Sqlstr := Sqlstr +#39+'%'+ Edit1.Text +'%'+#39;
      Sqlstr := Sqlstr + ' or SiteId like ';
      Sqlstr := Sqlstr +#39+'%'+ Edit1.Text +'%'+#39;
      Sqlstr := Sqlstr + ') order by SiteId ';
    //Str:=Str + ' and DeviceInf.DeviceAddr like '+#39+'%'+EdtSiteName.Text+'%'+#39;
      //Sqlstr := 'SELECT  * FROM DeviceInf ';
      memo1.Text := Sqlstr;
      try
        Query1.Close ;
        Query1.SQL.Clear ;
        Query1.SQL.Add(Sqlstr);
        Query1.Open;
        Query1.First;    ComboBox1.Items.Clear ;
        ComboBox1.Text :='';
        if  Query1.RecordCount <= 0 then
        begin
          ShowMessage('没有符合条件的站点数据,请重新选择查询条件!');
          Exit;
        end;
        while not Query1.Eof do
        begin
          ComboBox1.Items.Add(Query1.FieldByName('站点地址').AsString);
          Query1.Next ;    end;    except
          showmessage('查询数据出错!');
          exit;
      end;
    end;procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      memo1.Text := inttostr(Key);
      if (Key=40) or (Key=13)  then
      Begin
        ComboBox1.SetFocus;  Endend;procedure TForm1.ComboBox1Change(Sender: TObject);
    begin
      ComboBoxQuery;
    end;
    procedure TForm1.ComboBoxQuery;
    var Sqlstr : string;
    I : Integer;
    begin
      Sqlstr := 'SELECT DISTINCT DeviceInf.SiteId as 站点序列号,DeviceInf.DeviceAddr as 站点地址';
      Sqlstr := Sqlstr + ' FROM DeviceInf  where DeviceAddr <>'+#39#39' and (DeviceAddr like ';
      Sqlstr := Sqlstr +#39+'%'+ ComboBox1.Text +'%'+#39;
      Sqlstr := Sqlstr + ' or SiteId like ';
      Sqlstr := Sqlstr +#39+'%'+ ComboBox1.Text +'%'+#39;
      Sqlstr := Sqlstr + ') order by SiteId ';
    //Str:=Str + ' and DeviceInf.DeviceAddr like '+#39+'%'+EdtSiteName.Text+'%'+#39;
      //Sqlstr := 'SELECT  * FROM DeviceInf ';
      memo1.Lines.Add(Sqlstr) ;
      try
        Query1.Close ;
        Query1.SQL.Clear ;
        Query1.SQL.Add(Sqlstr);
        Query1.Open;
        Query1.First;    //For I := 0 to ComboBox1.Items.count do
         //  ComboBox1.Items[I]:='';
        ComboBox1.Items.Clear ;
        //ComboBox1.Text :='';
        if  Query1.RecordCount <= 0 then
        begin
          //ShowMessage('没有符合条件的站点数据,请重新选择查询条件!');
        end;    while not Query1.Eof do
        begin
          ComboBox1.Items.Add(Query1.FieldByName('站点序列号').AsString);
          Query1.Next ;
        end;
        Query1.First;
        Count := ComboBox1.Items.count;
        except
          showmessage('查询数据出错!');
          exit;
      end;
    end;
    procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
    begin
      //Memo1.Lines.Add('-'+Key+'-');
      //ComboBoxQuery;
    //  Memo1.Lines.Add('-ComboBox1KeyPress-');
    end;procedure TForm1.Button1Click(Sender: TObject);
    beginMemo1.Text :='';
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    Count := 0;
    end;end.
    请帮忙看看。