20:Combobox记忆功能 ( 积分: 20 )

  • 主题发起人 主题发起人 zqssoft
  • 开始时间 开始时间
Z

zqssoft

Unregistered / Unconfirmed
GUEST, unregistred user!
请问,类似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 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条记录,其余的不保存.
 
hhjjhhjj 的方法可以,只不过在读取的时候只读前10个数据就行了
 
来自:zqssoft, 时间:2007-11-22 19:58:01, ID:3853939
你们好,我只想要前10条记录,其余的不保存.

汗的说...LZ没事吧...
 
这个问题没有必要这么问了吧,很简单的解决方案,无非就是建立一个文件的问题了,每次程序启动初始化的时候,读进去,如果有更新,那就更新文件里面的内容.如果新输入combobox中的内容已经在列表中,那就调整保存在文件中的10条内容的先后顺序.这没有什么难的了.
 
风了。这个问题还不简单。搞个数组。设置长度为十。从StrArray[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);
End;
alist.SaveToFile(afile); //保存大于10条以上的
finally
alist.Clear;
alist.Free;
end;
End
Else
Begin
ComboBox1.Items.SaveToFile(afile); //保存10条以内的
End;
end;

{新增记录}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ComboBox1.Items.Insert(0, '11111');
end;
 
后退
顶部