在表单之间传递数据 - Ajax 比较
Passing data between forms - Ajax Comparison
我之前提过一个看起来像这样的问题,但人家没看懂。我将尝试更加简洁,并将与 Web 应用程序中使用的 Ajax 进行比较。
我有主窗体。我有一个按钮可以从字段中提取数据并发送到第二个表单,window 将弹出并以更有条理的方式显示数据(TListBox)。
我想知道是否有办法在 SecondForm.Show
上将此数据作为参数发送,例如 SecondForm.Show(data)
。
与Ajax的比较是,当您从html页面向服务器发出Ajax调用时,您发送封装数据,服务器接收并使用它.
我想让我的主窗体发送数据,第二个窗体接收数据并使用它。
可能吗?怎么样?
决定以何种形式将数据从Main发送到SecondFrom。例如在 TStringList 中。在主窗体上填写striglist,将其用作SecondForm.Show.
中的参数
如果我是你,我会向表单的 构造函数 添加参数,以便它从存在的那一刻起就拥有所需的所有信息。
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;
这是您删除的其他问题的答案。我相信它仍然适用。
如果可行,总是喜欢在构造函数中传递状态。
状态发生变化时会出现问题。多线程被变异状态所混淆。如果状态稍后更改,则使状态副本变得不同步的代码。
构造函数正在执行时不能使用对象。那是改变状态的时候,因为没有其他方可以看到该突变的影响。一旦构造函数 returns 将新创建的对象交给它的新所有者,它就被完全初始化了。
OOP 风格很难将所有变化限制在构造函数中。很少有图书馆承认这种编码风格。但是,您向构造函数中注入的突变越多,以后被发现的风险就越低。
实际上,对于您的场景,我怀疑这些风险很小。但是,作为一般原则,构造期间的初始化是合理的,统一遵守该原则是有意义的。
我之前提过一个看起来像这样的问题,但人家没看懂。我将尝试更加简洁,并将与 Web 应用程序中使用的 Ajax 进行比较。
我有主窗体。我有一个按钮可以从字段中提取数据并发送到第二个表单,window 将弹出并以更有条理的方式显示数据(TListBox)。
我想知道是否有办法在 SecondForm.Show
上将此数据作为参数发送,例如 SecondForm.Show(data)
。
与Ajax的比较是,当您从html页面向服务器发出Ajax调用时,您发送封装数据,服务器接收并使用它.
我想让我的主窗体发送数据,第二个窗体接收数据并使用它。
可能吗?怎么样?
决定以何种形式将数据从Main发送到SecondFrom。例如在 TStringList 中。在主窗体上填写striglist,将其用作SecondForm.Show.
中的参数如果我是你,我会向表单的 构造函数 添加参数,以便它从存在的那一刻起就拥有所需的所有信息。
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;
这是您删除的其他问题的答案。我相信它仍然适用。
如果可行,总是喜欢在构造函数中传递状态。
状态发生变化时会出现问题。多线程被变异状态所混淆。如果状态稍后更改,则使状态副本变得不同步的代码。
构造函数正在执行时不能使用对象。那是改变状态的时候,因为没有其他方可以看到该突变的影响。一旦构造函数 returns 将新创建的对象交给它的新所有者,它就被完全初始化了。
OOP 风格很难将所有变化限制在构造函数中。很少有图书馆承认这种编码风格。但是,您向构造函数中注入的突变越多,以后被发现的风险就越低。
实际上,对于您的场景,我怀疑这些风险很小。但是,作为一般原则,构造期间的初始化是合理的,统一遵守该原则是有意义的。