在表单之间传递数据 - Ajax比较

时间:2015-03-06 12:50:57

标签: forms delphi lazarus fpc

我之前提出的问题看起来像这样,人们不理解。我将尝试更简洁,并将使用与Web应用程序中使用的Ajax进行比较。

我有主要表格。在那里,我有一个按钮,它将从一个字段中提取数据并发送到第二个表单,一个窗口将弹出并以更有条理的方式显示数据(A TListBox)。

我想知道是否有办法SecondForm.Show将此数据作为参数发送,例如SecondForm.Show(data)

与Ajax的比较是,当你从一个html页面到服务器进行Ajax调用时,你发送封装数据,服务器接收它并使用它。

我希望我的主表单发送数据,第二种表单接收数据并使用它。

有可能吗?怎么样?

3 个答案:

答案 0 :(得分:2)

如果我是你,我会在表单的构造函数中添加参数,以便从它存在的那一刻起就拥有所需的所有信息。

constructor TSecondFrom.Create(AOwner: TComponent; AParam1: Integer; const AParam2: string);
begin
  inherited Create(AOwner);
  // Use or store parameters here
end;

不过,欢迎您写一些其他方法,如果您愿意,可以将其称为Show。将其定义为接受您需要的任何参数,当您准备就绪时,可以调用继承的零参数Show方法来显示表单。

procedure TSecondForm.Show(AParam1: Integer; const AParam2: string);
begin
  // Use parameters here.
  inherited Show;
end;

答案 1 :(得分:1)

确定将数据从Main发送到SecondFrom的形式。例如在TStringList中。填写主窗体上的striglist,将其用作SecondForm.Show中的参数。

答案 2 :(得分:1)

这是您删除的其他问题的答案。它仍然适用我相信。

如果可行的话,总是更喜欢在构造函数中传递状态。

状态问题在发生变化时发生。变异状态使多线程混乱。如果状态稍后更改,则使状态副本变得不同步的代码。

构造函数执行时无法使用对象。这是改变状态的时候,因为没有其他方可以看到该突变的影响。一旦构造函数将新创建的对象返回给它的新所有者,它就会被完全初始化。

使用OOP样式很难将所有变异限制为构造函数。很少(如果有的话)图书馆承认这种编码风格。但是,你进入构造函数的突变越多,后来被发现的风险就越低。

实际上,对于您的情况,我怀疑这些风险很小。然而,作为一般原则,构造期间的初始化是合理的,并且均匀地遵守该原理是有意义的。