高难度问题!编写自己的自定义模块,就像 TForm、TDataModule、TFrame 一样!

wanggongqin wanggongqin 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
大家都知道:要使继承于 TForm 的 Published 属性和方法出现 Object Inspector 中,
只要完成以下步骤就可以:

1、Publish 你自定义的 Property 或 Event;
2、利用 "Add to Repository" 将你自定义的 Form 加入到 "Object Repository";
3、将你的 Form 加入到一个 Package;
4、在你的 Package 中的 Register 方法中加上:
RegisterCustomModule(TMyCustomForm, TCustomModule);
5、编译你的 Package, 利用 "Install Package" 将它安装到 IDE 中。

现在的问题是:TForm 本身是怎么添加到 New Item 中的呢,
而且 TForm 并不像上述方法添加的 Form 一样,可以选择 Inherit 还是 Copy,
TForm 只能 Inherit。
再查看 TDataModule、TFrame 的代码,它们分别继承与 TComponent 和
TScrollingWinControl 。
它们是怎么添加到 NewItem 中的呢?

现在我也想将我定义的一个继承于 TWinControl 的控件,添加到 NewItem 中,
当我新建这个项目的时候,可以自动新建一个单元,并自动加上继承于我这个类的一个新类,
并且使这个类的 Published 方法和属性显示在 Object Inspector 中,
并且可以像 TForm 一样在设计期添加各种控件到这个控件上面。

我们知道 Delphi IDE 是个开放的开放环境,我想一定有办法实现。
...全文

相关推荐

delphi xe10 能将TFrame框架或对像群放入TListView的控件ShowAppListView, 支持FireMonkey

能将TFrame框架或对像群放入TListView的控件ShowAppListView 不需要按Style样式去做图片, 要改Listview的样式只需改对应的框架即可 简单代码实现强大功能,可以实现增加多列(Col)显示, 望delphi开发者互传,发挥delphi的强大 代码里面有demo, 还是那句话: 由于没做图标,安装后如出现新建/打开工程报错时,请把delphi关完再重开就好了

show508

在一个窗口中嵌入另一个窗口

在一个窗口中嵌入另外一个窗口,使用Dephi7开发

duliangpretty

Delphi中frame的使用

Delphi中frame的使用Delphi中frame的使用Delphi中frame的使用Delphi中frame的使用Delphi中frame的使用

nieshiao

DELPHI动态创建删除FRAME---示例源码

DELPHI动态创建删除FRAME unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls,FM; type TForm2 = class(TForm) Panel1: TPanel; Button2: TButton; ScrollBox1: TScrollBox; procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; type TFM = Array Of TFrame1; var Form2: TForm2; aFM: TFM; procedure DeleteArrItem(var arr: TFM ; Index: Integer);stdcall; implementation {$R *.dfm} procedure DeleteArrItem(var arr: TFM ; Index: Integer); var Count: Cardinal; i:integer; begin Count := Length(arr); if (Count = 0) or (Index = Count) then Exit; Move(arr[Index+1], arr[Index], (Count-Index)* SizeOf(arr[0])); SetLength(arr, Count - 1); for I := 0 to Length(arr) - 1 do begin arr[i].Label1.Caption:=inttostr(i); end; end; procedure TForm2.Button2Click(Sender: TObject); var fram:TFrame1; begin SetLength(aFM,length(aFM)+1); aFM[length(aFM)-1] :=TFrame1.Create(nil) ; fram:=aFM[length(aFM)-1]; fram.Label1.Caption:=inttostr(length(aFM)-1); fram.Parent:=ScrollBox1; end; end. unit fm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TFrame1 = class(TFrame) GroupBox1: TGroupBox; Label1: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; implementation uses unit2; {$R *.dfm} procedure TFrame1.Button1Click(Sender: TObject); begin DeleteArrItem(aFM,strtoint(label1.Caption)); ( Sender as Tbutton ).Parent.Parent.Destroy; end; end.

RZL_01

TFrameStand:用于Delphi FireMonkey(FMX)的TFrameStand和TFormStand组件

#TFrameStand和TFormStand组件(FMX)在整个FireMonkey(FMX)应用程序中轻松使用TFrame或TForm后代,以通过整体用户体验获得视觉一致性,并轻松添加诸如效果和过渡之类的现代元素。 所有代码和演示都在Delphi XE8和Delphi 10.4 Sydney上进行了测试。 安装-GetIt! TFrameStand和TFormStand (Embarcadero的软件包管理器)上 GetIt的当前版本:1.6 安装说明 打开“ packages \ FrameStand_10_4.groupproj” 构建两个包含的软件包 安装“ dclFrameStandPackage_10_4_270.bpl”设计时软件包 为Delphi添加“ source \”库路径(针对您需要支持的每个平台执行此操作) 手动安装可获得最新更新(当心!:-)) 主要

Tstormatroc
评论 9
收藏 已收藏
分享
返回顶部
wanggongqin
Delphi 5,944 成员 262,941 内容