Delphi ComboBox

Combobox记忆功能

类似IE5.0输入框记忆功能,让combobox中最近记录的前10条内容保存到文件中?

用一个文件记录下可以了。
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   ComboBox1.Items.SaveToFile(Extractfilepath(ParamStr(0))+'temp.txt');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   ComboBox1.Items.LoadFromFile(Extractfilepath(ParamStr(0))+'temp.txt');
end;

 

procedure TfrmMain.ReadBox;
var
   Str: string;
begin
   cmbxSlsNumber.Clear;
   Str := ReadIni(IniFileName,'Main','Number');
   if Str = '' then Exit;
   while Pos(',',Str) > 0 do
   begin
     cmbxSlsNumber.Items.Add(Copy(Str,1,Pos(',',Str)-1));
     Delete(Str,1,Pos(',',Str));
   end;
   cmbxSlsNumber.ItemIndex := 0;
end;

procedure TfrmMain.WriteBox;
var
   Str: string;
   i, j: integer;
begin
   if cmbxSlsNumber.Items.Count = 0 then
   begin
     Str := cmbxSlsNumber.Text + ',';
     WriteIni(IniFileName,'Main','Number',Str);
   end;
   for i := 0 to cmbxSlsNumber.Items.Count -1 do
   begin
     if cmbxSlsNumber.Text = cmbxSlsNumber.Items[i] then
       Exit;
   end;
   Str := cmbxSlsNumber.Text + ',';
   for j := 0 to cmbxSlsNumber.Items.Count -1 do
   begin
     Str := Str + cmbxSlsNumber.Items[j] + ','    ;
     WriteIni(IniFileName,'Main','Number',Str);
   end;
end;

WriteIni和ReadIni是一个读写INI文件的函数

 要前10条记录,其余的不保存,只不过在读取的时候只读前10个数据就行了

你们好,我只想要前10条记录,其余的不保存.
每次程序启动初始化的时候,读进去,如果有更新,那就更新文件里面的内容.如果新输入combobox中的内容已经在列表中,那就调整保存在文件中的10条内容的先后顺序.

{加载历史记录}
procedure TForm1.FormCreate(Sender: TObject);
Var
   afile: String;
begin
   afile := Extractfilepath(ParamStr(0))+'temp.text'; //后缀可用其他:e.g. temp.db
   If FileExists(afile) Then
     ComboBox1.Items.LoadFromFile(afile);
end;

{保存历史记录}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
Var
   I: Byte;
   afile: String;
   alist: TStringList;
begin
   afile := Extractfilepath(ParamStr(0))+'temp.text';
   If ComboBox1.Items.Count > 10 Then
   Begin
     alist := TStringList.Create; //用alist来存放前10条记录
     try
       For I := 0 To 9 Do
       Begin
         alist.Add(ComboBox1.Items.Strings[I]);
       End;
       alist.SaveToFile(afile); //保存大于10条以上的
     finally
       alist.Clear;
       alist.Free;
     end;
   End
   Else
   Begin
     ComboBox1.Items.SaveToFile(afile); //保存10条以内的
   End;
end;


posted @ 2019-01-23 15:51  YJCCN  阅读(736)  评论(0)    收藏  举报