我为另一个类似的问题道歉,但我希望找到一个更简单的解决方案来解决我遇到的问题。
我在form1中有一个listview,我希望form2能够添加到。 Form2由按钮按下由form1创建。 Form2有一个列表视图,当我点击form2中的一个按钮时,我希望它将所有项目添加到form1中的listview并关闭form2。实现这一目标的最简单方法是什么?
*我尝试使用Windows消息,但由于某些原因,Lazarus无法使用TWM_CopyData。
答案 0 :(得分:4)
由于我更喜欢单位引用,这里有什么可以帮到你。在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;