814123
2018-07-12 14:02
采纳率: 100%
浏览 1.1k
已采纳

delphi 调用子窗体传值的问题?

有2个窗体调用一个子窗体,
第一个窗体传值给子窗体可以,第二个窗体传值有值的,跟踪到子窗体时值为空。
子窗体是动态创建的。
比如第一个窗体传值:
sName := '1';
子窗体SHOW时显示1;正确。
第二个窗体传值过去:
sName := '2';
子窗体SHOW时是空,问题就在这里了?
第一个窗体用的是全局变量sName,第二个窗体也是一个sName的全局变量。

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • threenewbee 2018-07-12 16:22
    已采纳
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • threenewbee 2018-07-12 14:04

    贴出代码看下,或者代码全部压缩放到网盘里,给链接。

    评论
    解决 无用
    打赏 举报
  • threenewbee 2018-07-12 16:18

    不需要用全局变量,在子窗口里面定义一个成员变量

     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;
    
    评论
    解决 无用
    打赏 举报
  • threenewbee 2018-07-12 16:20

    图片说明

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题