有2个窗体调用一个子窗体,
第一个窗体传值给子窗体可以,第二个窗体传值有值的,跟踪到子窗体时值为空。
子窗体是动态创建的。
比如第一个窗体传值:
sName := '1';
子窗体SHOW时显示1;正确。
第二个窗体传值过去:
sName := '2';
子窗体SHOW时是空,问题就在这里了?
第一个窗体用的是全局变量sName,第二个窗体也是一个sName的全局变量。
完整代码:https://download.csdn.net/download/caozhy/10538409
贴出代码看下,或者代码全部压缩放到网盘里,给链接。
不需要用全局变量,在子窗口里面定义一个成员变量
unit udlg;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
Tdlg = class(TForm)
Label1: TLabel;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
val :String; //定义在这里
end;
var
dlg: Tdlg;
implementation
{$R *.dfm}
procedure Tdlg.FormShow(Sender: TObject);
begin
Label1.Caption := val; //显示
end;
end.
调用:
procedure TForm2.Button1Click(Sender: TObject);
var
dlg: Tdlg;
begin
dlg := Tdlg.Create(self);
dlg.val := Edit1.Text; //传过去
dlg.ShowModal();//显示子窗口
end;