我很抱歉有另一个类似的问题,但我希望找到一个更简单的解决方案来解决我遇到的问题。
我在 form1 中有一个列表视图,我希望 form2 能够添加到该列表视图中。Form2 由 form1 通过按下按钮创建。Form2 有一个列表视图,当我单击 form2 中的按钮时,我希望它将所有项目添加到 form1 中的列表视图并关闭 form2。完成此任务的最简单方法是什么?
*我尝试使用 Windows 消息传递,但由于某种原因 Lazarus 不适用于 TWM_CopyData。
因为我更喜欢单位引用,所以这可能会对你有所帮助。在Form2
声明的公共属性TargetListView
中,分配了Form1
之前Form2
显示的列表视图。现在您可以从范围访问Form1
列表视图,Form2
并且可以在关闭它之前将项目复制到那里。
这是第一个单元的简化代码:
unit Unit1;
uses
Unit2;
type
TForm1 = class(TForm)
Button1: TButton;
ListView1: TListView;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(Self);
Form2.TargetListView := ListView1;
Form2.Show;
end;
这是第二个单元的简化代码:
unit Unit2;
type
TForm2 = class(TForm)
Button1: TButton;
ListView1: TListView;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
TargetListView: TListView;
end;
procedure TForm2.Button1Click(Sender: TObject);
var
I: Integer;
begin
TargetListView.Items.BeginUpdate;
try
for I := 0 to ListView1.Items.Count - 1 do
TargetListView.Items.Add.Assign(ListView1.Items[I]);
finally
TargetListView.Items.EndUpdate;
end;
Close;
end;