Держать во время исполнения всегда открытым ini-файл не есть хорошо, его обычно считывают/записывают и сразу закрывают
Так и не смог понять логику работы из описания, что именно нужно, но может так
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IniFiles, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
cam_act: TListBox;
Edit1: TEdit;
Button1: TButton;
UserListView: TListView;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure cam_actDblClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure cam_actClick(Sender: TObject);
procedure UserListViewDblClick(Sender: TObject);
private
{ Private declarations }
procedure ULUpdate;
public
{ Public declarations }
end;
var
Form1: TForm1;
Ini: Tinifile;
List: TStringList;
implementation
{$R *.dfm}
procedure TForm1.ULUpdate;
var i: integer;
begin
cam_act.Clear;
List.Clear;
for i:=0 to UserListView.Items.Count-1 do
cam_act.Items.Add(UserListView.Items.Item[i].Caption);
Ini.ReadSection('ListBox1',List);
for i := 0 to List.Count - 1 do
//проблема здесь!!!
cam_act.Items.Strings[UserListView.Items.IndexOf(UserListView.Items.Item[i])]:=
Ini.ReadString('ListBox1', List.Strings[i], '');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Ini:=TiniFile.Create(ExtractFilePath(paramstr(0))+'wm_settings.ini');
List := TStringList.Create;
end;
procedure TForm1.cam_actDblClick(Sender: TObject);
begin
UserListView.ItemIndex:=cam_act.ItemIndex;
UserListView.SetFocus;
Label1.Caption:= IntToStr(UserListView.ItemIndex);
//ListBox1.OnDblClick(nil);
end;
procedure TForm1.FormDestroy(Sender: TObject);
var i: integer;
begin
for i := 0 to cam_act.Items.Count - 1 do
Ini.WriteString('ListBox1', UserListView.Items.Item[i].Caption, cam_act.Items.Strings[i]);
Ini.Free;
List.Free;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
ULUpdate;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if cam_act.ItemIndex > -1 then
cam_act.Items[cam_act.ItemIndex] := Edit1.Text;
end;
procedure TForm1.cam_actClick(Sender: TObject);
begin
UserListView.ItemIndex:=cam_act.ItemIndex;
UserListView.SetFocus ;
end;
procedure TForm1.UserListViewDblClick(Sender: TObject);
begin
Label1.Caption:= IntToStr(UserListView.ItemIndex);
end;
end.