主Pas文件引用从Pas文件,从Pas文件有一个输入参数过程,该过程靠主Form动态生成的Edit和Button完成(代码如下),如果动态生成的Button被点

  • 主题发起人 主题发起人 YL_YAN
  • 开始时间 开始时间
Y

YL_YAN

Unregistered / Unconfirmed
GUEST, unregistred user!
主Pas文件引用从Pas文件,从Pas文件有一个输入参数过程,该过程靠主Form动态生成的Edit和Button完成(代码如下),如果动态生成的Button被点击,则把输入值返回unit2.pas中,赋值给实数 x ,这代码要怎样写? 谢谢!(100分)<br />主Pas文件引用从Pas文件,从Pas文件有一个输入参数过程,该过程靠主Form动态生成的Edit和Button完成(代码如下),如果动态生成的Button被点击,则把输入值返回unit2.pas中,赋值给实数 x ,这代码要怎样写? 谢谢!

主Pas文件代码如下:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,UNIT2;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
s : String;
{ Private declarations }
public
property Inputvalue : String read s;
procedure Btn1Click(Sender: TObject);
{ Public declarations }
end;

var
Form1 :TForm1;
Edit1 :TEdit; //动态生成
ButtonA :TButton; //动态生成的Button按钮
Btn1ClickBool : Boolean; //判断动态生成的Button按钮是否被点击

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
x : real;
begin
read_r; //动态生成Edit、Button按钮来输入参数

等动态生成的Button被点击,如果被点击则把输入值返回unit2.pas中,赋值给实数x,这代码要怎样写?

read_real(x);
Form1.Caption :=FloattoStr(x);
end;

procedure TForm1.Btn1Click(Sender: TObject);
begin
S:=Edit1.Text;
Edit1.Visible:=False;
ButtonA.Visible :=False;
Btn1ClickBool :=True;
end;

end.


从Pas文件代码如下:
unit unit2;

interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

procedure read_r;
procedure read_real(var x:real);

implementation
uses unit1;

procedure read_r;
begin
Edit1 :=TEdit.Create(Form1);
Edit1.Parent :=Form1;
Edit1.top :=10;
Edit1.left:=200;

ButtonA:=TButton.Create(Form1);
ButtonA.Parent :=Form1;
ButtonA.Left:=300;
ButtonA.top:=10;
ButtonA.OnClick:= Form1.Btn1Click;

end;

procedure read_real(var x:real);
begin
if Btn1ClickBool then x:=StrToFloat(Form1.Inputvalue);
end;

end.
 
你的
read_real(x);
Form1.Caption :=FloattoStr(x);
是不是应该放在Btn1Click事件中[?]
 
procedure TForm1.Btn1Click(Sender: TObject);
var
x : real;
begin
S:=Edit1.Text;
Edit1.Visible:=False;
ButtonA.Visible :=False;
Btn1ClickBool :=True;

read_r; //动态生成Edit、Button按钮来输入参数

//等动态生成的Button被点击,如果被点击则把输入值返回unit2.pas中,赋值给实数x,这代码要怎样写?

read_real(x);
Form1.Caption :=FloattoStr(x);
end;
 
因为在Unit2.pas中需要根据输入的参数来进行一些计算,所以不能把read_real(x)放在Btn1Click事件中。
 
我不懂如何判断动态生成的Button被点击。
 
根据你的代码
Button1Click只是创建 Edit1和ButtonA
你在Button1Click里执行
read_real(x);
这时候Form1.Inputvalue值是没有初始化的,不知道你想怎么取他的值

为什么要判断动态生成的Button被点击?
动态生成Button被点击的时候会触发Btn1Click事件
你的代码
(ButtonA.OnClick:= Form1.Btn1Click;)
这时候可以取的Edit1里输入的值,在这里计算不可以吗[?]

是不是我没理解你的[?]
 
合二为一即简单又好!
 
后退
顶部