На форме есть TListView с одноформатными записями, например,
Line1
Line2
...
Line5,
а также TListBox, куда при событиях FormShow и ListViewChange переносятся итемы из TListView. Есть ini-файл следующего формата
[ListBox1]
Line1=Значение_1
Line2=Line2
Line3=Значение_3
Line4=Значение_4
Line5=Line5,
т.е в TListBox, необходимо отобразить значения N соответственно элементам в TListBox, с возможностью изменения имени в TEdit. Двойной клик по элементу в TListBox должен запускать свойство OnDblClick соответствующей записи в TListView. Проблема в том, что не удается синхронизировать элементы в двух компонентах. Заранее спасибо.
Код:
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;
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);
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;
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;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
ULUpdate;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
cam_act.Items[cam_act.ItemIndex] := Edit1.Text;
end;
procedure TForm1.cam_actClick(Sender: TObject);
begin
UserListView.ItemIndex:=cam_act.ItemIndex;
end;
end.