求助:程序内两个窗体间动态控件信息传递问题(100分)

  • 主题发起人 主题发起人 Likui
  • 开始时间 开始时间
L

Likui

Unregistered / Unconfirmed
GUEST, unregistred user!
[?]简单描述一下:有一个程序,有A/B两个窗体,A窗体上动态创建一个Edit_A控件,B窗体上创建了一个Edit_B控件,现在需要将B窗体上EDIT_B控件的text内容传递给A窗体里的Edit_A,请问如何编写程序。
谢谢各位了。以下是这个程序的Demo下载地址。
http://likui-36.ys168.com/note/fd.htm?http://ys-D.ys168.com/?传递信息.rar_4shkk9d8e2bshkktnjtnljksppqr5b5btnlmno7bu14z97f14z
 
你是怎么动态创建的?
动态创建的语句这么写:
var
Form2: TForm2;
A:TEdit;
implementation
uses
Unit1;
{$R *.dfm}
procedure TForm2.btn1Click(Sender: TObject);
begin
A:=Tedit.create(form2);//?好象是这样,括号内是父容器
end;

在另一个窗体里有FROM2.A 引用就可以了吗?还有别的问题吗?
 
http://topic.csdn.net/t/20050920/14/4281697.html
unit FileMap;


interface

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


type
TFileMap=class(TComponent)
private
FMapHandle:THandle;
//内存映射文件句柄
FMutexHandle:THandle;
//互斥句柄
FMapName:string;
//内存映射对象
FSynchMessage:string;
//同步消息
FMapStrings:TStringList;
//存储映射文件信息
FSize:DWord;
//映射文件大小
FMessageID:DWord;
//注册的消息号
FMapPointer:PChar;
//映射文件的数据区指针
FLocked:Boolean;
//锁定
FIsMapOpen:Boolean;
//文件是否打开
FExistsAlready:Boolean;
//是否已经建立过映射文件
FReading:Boolean;
//是否正在读取内存文件数据
FAutoSynch:Boolean;
//是否同步
FOnChange:TNotifyEvent;
//当内存数据区内容改变时
FFormHandle:Hwnd;
//存储本窗口的窗口句柄
FPNewWndHandler:Pointer;

FPOldWndHandler:Pointer;

procedure SetMapName(Value:string);

procedure SetMapStrings(Value:TStringList);

procedure SetSize(Value:DWord);

procedure SetAutoSynch(Value:Boolean);

procedure EnterCriticalSection;

procedure LeaveCriticalSection;

procedure MapStringsChange(Sender:TObject);

procedure NewWndProc(var FMessage:TMessage);

public
constructor Create(AOwner:TComponent);override;
 
//窗体A 动态创建一个edit控件
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
btn1: TButton;
procedure btn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
texta:string;
end;

var
Form1: TForm1;
implementation
uses
Unit2;
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
begin
Form2.ShowModal;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
edt:TEdit;
begin
edt:=TEdit.Create(Form1);
edt.Parent:=Form1;
edt.Top:=100;
edt.Left:=100;
edt.Name:='edt_test';
end;

end.

//窗体B
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
edt1: TEdit;
btn1: TButton;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;
implementation
uses
Unit1;
{$R *.dfm}
procedure TForm2.btn1Click(Sender: TObject);
begin
//如何查找A窗体中指定edit控件,并将B窗体中的edit的text值赋给A窗体上的edit控件。
end;

end.
 
findcomponent('edt_test')
 
最好把
var
edt:TEdit;
begin
edt:=TEdit.Create(Form1);
edt声明为公共变量,放到PUBLIC,那样引用起来更方便,直接用FORM1.EDT就可以了
 
我试过findcomponent这个方法了,不行。
我要把form2中的edit2.text传递给form1中的edt_test
form1.findcomponent('edt_test').text:=form2.edit2.text
这个语句有问题,不能使用。
 
Tedit(form1.findcomponent('edt_test')).text:=form2.edit2.text;
 
非常感谢 madeagle,已送分。
 
后退
顶部