高分求:动态创建组件问题?

将计就计123 2004-04-22 01:52:40
现有窗体FROM1,BUTTON1于其上
点击 BUTTON1:创建新窗体FROM1,并于其上创建F2BUTTON1按钮,F2EDIT1文本框
<--->
问题:
如何实现点击F2BUTTON1,为F2EDIT1赋值?
...全文
20 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
将计就计123 2004-04-23
  • 打赏
  • 举报
回复
感谢前辈 aiirii(ari-爱的眼睛)
ttch(最近比较烦(工作没找到))
结贴了!!
ttch 2004-04-23
  • 打赏
  • 举报
回复
我说了代码不一定可编译 :(

你可以用pointer(b)这样转换
aiirii 2004-04-23
  • 打赏
  • 举报
回复
procedure TFORM1.abcd(sender:TOBJECT);
BEGIN

(((sender as TButton).Parent as TForm).FindComponent('tedit1') as TEdit).Text := 'XXXX';

<*>这里我该怎么写呢?<*>
END;
将计就计123 2004-04-23
  • 打赏
  • 举报
回复
TO: shun3(天使鬼差)
abcd是由 新创建按钮的 ONCLICK
SENDER 不会是 TEDIT 的
shun3 2004-04-23
  • 打赏
  • 举报
回复

procedure TFORM1.abcd(sender:TOBJECT);
BEGIN
<*>要改变C 的 TEXT 这里我该怎么写呢?<*>
if sender is Tedit then //不知道是不是你要的结果...
Tedit(sender).text:='';
END;

将计就计123 2004-04-23
  • 打赏
  • 举报
回复
郁闷中....
在线等,解决马上给分

好像有点头绪,乱乱的
将计就计123 2004-04-23
  • 打赏
  • 举报
回复
TO:ttch(最近比较烦(工作没找到))

[Error] Unit1.pas(76): Undeclared identifier: 'B'
将计就计123 2004-04-23
  • 打赏
  • 举报
回复
TO: ADWARDS00(大拇指) 不好用啊
ttch 2004-04-23
  • 打赏
  • 举报
回复
呵呵 :)

在DELPHI中 对象在局部不会释放,因为TOBJECT是使用GETMEM创建空间的

记得在你的程序释放的时候 对TList每个指针释放就可以了

这样就不会LEAK 要不你的内存泄露是不可避免的 动态就要考虑不泄露内存才是重要的
将计就计123 2004-04-23
  • 打赏
  • 举报
回复
TO: ttch(最近比较烦(工作没找到)) B是局部变量啊
ADWARDS00 2004-04-23
  • 打赏
  • 举报
回复
1>你其他都不变,在你的窗体上放一个隐藏的button,然后写好给edit附值的代码,比如edti1.text:='11'
2>然后你创建完新的button1后,补一句代码 button1.onclick:=button.onclick
这样就可以了
ttch 2004-04-23
  • 打赏
  • 举报
回复
var
DControlList:TList;//你的动态控件指针列表,这样就不会出现LEAK了


procedure xxxx;
var
b:Button;
begin
b:=Button.Create(Form1);
DControlList.Add(B);
//do some
end;

procedure xxx*****;
var
i:Integer;
begin
I:=DControlList.Indexof(B);
TButton(DControlList[i]).Dosome//你要做的事情.
end;


//上面的代码只是例子你可以参考
将计就计123 2004-04-23
  • 打赏
  • 举报
回复
TO:welllove88(寒林) A是动态创建的
将计就计123 2004-04-23
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var a:tform;
var b:tbutton;
var c:tedit;
begin
a:=tform.Create(application);
a.Left:=100;
a.Top:=100;
a.Visible:=true;
b:=tbutton.Create(a);
b.ParentWindow:=a.Handle;
b.Left:=10;
b.Top:=10;
b.Name:='button1';
b.Caption:='button1';
b.OnClick:=ABCD;
b.Visible:=true;

c:=tedit.Create(a);
c.ParentWindow:=a.Handle;
c.Left:=b.Left+b.Width +5;
c.Top:=10;
c.Name:='tedit1';
c.Text:='tedit1';
c.Visible:=true;
end;
.....
procedure TFORM1.abcd(sender:TOBJECT);
BEGIN
<*>要改变C 的 TEXT 这里我该怎么写呢?<*>
END;
welllove88 2004-04-23
  • 打赏
  • 举报
回复
a.b.Edit1.text:='';
将计就计123 2004-04-23
  • 打赏
  • 举报
回复
TO: zhouxiaochenchina() 我不是你这个意思哦
将计就计123 2004-04-23
  • 打赏
  • 举报
回复
楼上的前辈:

.
.
.
procedure TForm1.Button1Click(Sender: TObject);
var a:tform;
var b:tbutton;
begin
a:=tform.Create(application);
a.Left:=100;
a.Top:=100;
a.Visible:=true;
b:=tbutton.Create(a);
b.ParentWindow:=a.Handle;
b.Left:=10;
b.Top:=10;
b.Name:='button1';
b.Caption:='button1';
b.OnClick:=ABCD;
b.Visible:=true;
end;
.....
procedure TFORM1.abcd(sender:TOBJECT);
BEGIN
<*>这里我该怎么写呢?<*>
END;
zhouxiaochenchina 2004-04-23
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
buttontemp:tbutton;
begin
buttontemp:=tbutton.Create(self);
buttontemp.Parent:=panel1;
buttontemp.Caption:='确定';
end;
aiirii 2004-04-23
  • 打赏
  • 举报
回复
>>如何实现点击F2BUTTON1,为F2EDIT1赋值?
你要將寫好一個事件函數,
F2BTN1 Create 後, 將其Click事件指到該函數
将计就计123 2004-04-23
  • 打赏
  • 举报
回复
点击 BUTTON1:创建新窗体FROM2,并于其上创建F2BUTTON1按钮,F2EDIT1文本框
<--------------------------------------------------------------------->
真的没有人...

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧