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;