如何动态使用构件和控件

RunInQuake 2001-03-09 05:11:00
如何动态创建和显示一个构件或控件。
比如说是一个TButton,TLabel,TListBox,TComboBox,或者是一种第三方的ActiveX控件等等,想响应某一事件创建并显示它。
比如

TForm1.OnButtonClick(Sender:TObject)
var
MyButton:TButton
begin
..... //想在这里创建并显示
{
MyButton:=TButton.Create...
MyButton.Name:=..
MyButton.Caption :=
MyButton.Visible:=
} //这一段不行。

end;

MyButton对象应该定义在哪里?定义在上面这个过程里还是定义在Form类里,因为
我还要这个MyButton响应一些事件,支持拖动,等等。
最后如何删除。 Free就可以了吗?

初学Delphi,请多指教。谢谢






...全文
144 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bill_lasker 2001-03-09
  • 打赏
  • 举报
回复
练习过自己做控件这个问题就会解决了
TopCat 2001-03-09
  • 打赏
  • 举报
回复
procedure TForm1.MyClick(Sender:TObject);
begin
//事件处理代码
end;

然后写
myButton.OnClick := MyClick;
就可以了
jeaking 2001-03-09
  • 打赏
  • 举报
回复
你定义的TButton类型的变量其实只是一个对象的一个引用,实质就是一个指针。
真正的对象是通过TButton.Create(Owner)创建的,引用消失并不等于对象也消失,
只是你无法通过这个引用操纵它(当然也可以通过别的引用),对象随它的Owner
消失而消失,对象的Parent属性是决定它的显示位置的。想要释放对象用.free方法
或.destory方法。
jeaking 2001-03-09
  • 打赏
  • 举报
回复
你定义的TButton类型的变量其实只是一个对象的一个引用,实质就是一个指针。
真正的对象是通过TButton.Create(Owner)创建的,引用消失并不等于对象也消失,
只是你无法通过这个引用操纵它(当然也可以通过别的引用),对象随它的Owner
消失而消失,对象的Parent属性是决定它的显示位置的。
RunInQuake 2001-03-09
  • 打赏
  • 举报
回复
这一点拨就明白了。
我发现定义的对象好象在哪里都无所谓的,在过程里定义都可以。
在过程里定义的不是局部的吗?为什么离开了该过程还是可以显示按钮和响应点击?
怎么样把他删除掉?
我对Delphi 的内存对象又糊涂了,我以前是用vc的。
SGP 2001-03-09
  • 打赏
  • 举报
回复
一定要指定parent属性为当前的载体,如mybottom.parent:=myform,也可以在其它控件中显示此控件,如MyBottom.parent:=MyPanel,这可使MyBottom显示在MyPanel中。
yukuang 2001-03-09
  • 打赏
  • 举报
回复
事件:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
a:TButton;
procedure Button1Click(Sender: TObject);
procedure AClickEventHandler(sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.AClickEventHandler(sender: TObject);
begin
Showmessage('Hello!');
end;

procedure TForm1.Button1Click(Sender: TObject);

begin
a:=Tbutton.Create(self);
a.Caption:='abc';
a.Parent:=Form1;
a.OnClick:=AClickEventHandler;
end;

end.
yukuang 2001-03-09
  • 打赏
  • 举报
回复
指定
myButton.Parent:=Form1;
就可以显示了。至于怎么响应它的事件。关注。。。
一些老的控件的集合: ------------------------------------------------------------------ xtoolbar.zip 41K 作者: Jean-Philippe Bernardy. 很不错的工具条控件 armenutb.zip 33K 作者: Albert Research。 提供用TListView选择全部的 Menu Item的工具条控件 dfssatausbar.zip 36K 作者: Brad Stowers。 TDFSStatusBar 是加强版 TStatusBar 构件,能够在其内放置其他构件(可在IDE环境瞎直接拖放),提供显示键盘上( CAPS Lock、NUM Lock、SCROLL Lock) 的状态,并提供进度显示进度及当前时间日期等多项功能 dfstoolbar.zip 10K 作者: Brad Stowers。 TDFSToolBar 是增强型的 TToolBar 构件,提供类似 Netscape Communicator 般的工具条,能够放到最大化及还原 sfoutbar.zip 23K 作者: Sylvain Frere. 类似Microsoft Outlook控制条控件,功能有支持大小图标显示,平滑滚动,快捷键,多重选择等 tbargood.zip 44K 作者: Seth Taylor。 配置 TForm TiTle的控件,功能很多 colorbtn.zip 9K Windows95风格的选择颜色的按钮元件 bcolorbtn.zip 26K 作者: Brad Stowers. Windows95风格的选择颜色的按钮元件 explbtn.zip 37K 作者: Fabrice Deville 。 TExploreButton 是类似 Microsoft Internet Explorer 3.0 式样的 Speed Button gradbutt.zip 13K 作者: Harm TGradBtn 是能够显示渐变颜色的 TButton 构件,并能控制按钮上文字以多种立体样式显示 avhebchk.zip 13K 作者: Alex Zanis. 在右边显示选择勾的CHeckBox控件,适合从右到作的语言如阿拉伯语. amcbrb.zip 10K 作者: Alexander Meeder。 以BMP图片自定义显示外观的增强型 TRadioButton 及 TCheckBox 构件 noshape.zip 86K 作者: Michael Tran 能够照指定的BMP 图像外观直接变成按钮外观的增强型按钮构件,带Exe演示程序 hnoshape.zip 4K 能够照指定两个BMP 图像变成按钮外观的增强型按钮构件 btchkbox.zip 5K 增强型TCheckBox 构件,可以按不同的选取状态选择各自BMP图片 jcheck10.zip 12K 很漂亮的增强型TCheckBox 构件 lightchk.zip 2K 作者: Frederic Vanmol。 圆形 LED 类型的 TCheckBox 构件,可以加亮变暗. speedrol.zip 1K 可以根据Button不同状态(Up,Down,Over)显示不同图片,支持一个大Glyph分成三个按钮图. transrad.zip 2K 作者: Jason Looney. 透明Ridio Button torrybtn.zip 81K 作者: Maxim Peresada, Rob Schoenaker. TTorryButton 是增强型的 TSpeedButton 构件,外观如同一个普通的 TLabel 般,当鼠标移动至按钮上方,立即显示出按钮边框及加亮的LED 类型.带Exe演示程序 jcheck10.zip 12K 作者: Jan Hulala。 Windows98 外观的增强型 TCheckBox 构件. coolbtn.zip 2K 作者: Geert Vos。 TCoolButton2 是增强型的 TSpeedButton 构件,当鼠标移至其上方时按钮上的文字将会出现阴影 corelbtn.zip 2K 作者: Peter Theill。 提供类似 Corel 公司产品( Corel Photo Paint )中的特殊样式按钮 mscheckb.zip 5K 作者: Vasily Kholopov. 增强型的 TBitBtn 构件,当被鼠标按下时能够改变 Glyphs 格式 .BMP 的显示内容 shakebtn.zip 36K 作者: Harm. Sh

5,937

社区成员

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

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