delphi 不可视组件开发在开发不可视组件时,要使其中一个属性可以调用系统文件对话框选择文件从而获取到所
delphi 不可视组件开发
在开发不可视组件时,要使其中一个属性可以调用系统文件对话框选择文件从而获取到所需要的路径,而不是用手动输入路径。比如在软件设计期双击不可视组件弹出系统文件选择对话框,或者在属性选择器里面可以点击一个属性弹出系统文件对话框。
[解决办法]
越来越觉得:
非界面的控件,还是直接做成类,由代码创建、设置、使用它们,更好
因为做成组件,还得先安装到ide环境
界面控件,因为设计时拖、摆的需要,做成组件方便很多
[解决办法]
componenteditor
[解决办法]
[解决办法]如果能拖、摆控件就能搭建的
那么,作者完全可以在类的接口部分直接多写一行注释,内容为 简易的使用方法
使用者不用看任何其它东西就会用了
为什么讨厌组件方式?
因为有时候只是偶尔打开某个项目,它使用的控件也不是常见、常用的,却不得不为此编译、安装它使用到的所以控件
[解决办法]不管可视与非可视,要使用它必须要源码;至于用那种,隨个人喜欢了
懒人就喜欢拉控件,如果只是3、2个小小的功能,就没必要做成控件了,如果是供别人使用的,多数是做成控件的
[解决办法][解决办法][解决办法]编写一个熟悉编辑器并注册,详细参考 《delphi5开发人员指南》第22章
[解决办法]呐,这个说的简单点,你按照以下步骤试试
1:找到控件的注册单元,也就是在dpk工程中找到包含 procedure Register(); 这个方法实现的那个unit
2:如果你要编辑的那个属性的类型是string的话,你就声明一个类从TStringProperty继承类,
命名为TXXXStrProp,
3:重载function GetAttributes: TPropertyAttributes; override;
返回值是一个集合
如果你是想要一个按钮就写 Result:= [paDialog];
如果你还想让editor只读 就写 Result:= [paReadOnly, paDialog];
4:如果你将上面GetAttributes类型返回成为 paDialog,
请重载procedure Edit; override;
在Edit方法中编写open dialog 方法
获取当前编辑控件对象的方法是 (GetComponent(0) as 当前编辑对象类).当前编辑的属性
对其赋值 即可
5:在procedure Register();方法中添加以下函数调用
RegisterPropertyEditor(TypeInfo(String), 控件类, '你要编辑的属性名',
TXXXStrProp);
6:rebuild
[解决办法]呐,如果你想双击控件图标弹出编辑界面的话,可以按照以下步骤试试
1:找到控件的注册单元,也就是在dpk工程中找到包含 procedure Register(); 这个方法实现的那个unit
2:从TComponentEditor派生类,命名为TXXXComponentEditor
3:重载function GetVerbCount: Integer; override;
这个方法决定了你右键单击控件图标,右键菜单中自定义的菜单项的数量
双击控件,默认响应Index为0的菜单项
如果这里你只是想要一个弹出的对话框,那返回值写 Result:= 1;
4:重载function GetVerb(Index: Integer): String; override;
与上一个函数对应,从0开始,每一个菜单项的显示名称
如果你只是一个要弹出对话框的菜单项,就写成
Delphi(Pascal) code case Index of 0: Result:= 'Select a Directory'; else Result:= ''; end;
[解决办法]
麻烦,如果自已用,就直接使用string属性,直接输入文件的完整路径名即可,用组件编辑器有点小麻烦
[解决办法]
12楼
在第5步之后遗漏了一句
还需要在 procedure register 函数中添加以下一句
RegisterComponentEditor(控件类, TXXXComponentEditor);
sorry
[解决办法]
在权衡是应该编写一个『不可视控件』还是写一个『功能类』,我想有一个最主要的原则,如果你提供的功能不需要与可视化控件有交互的话,那这个功能一般就不需要被写成控件,反之,写成控件更好。
[解决办法]
“控件”这个概念基本上等同于可视组件(“控件”一词的来源应该是从“control”演变来的,“控制”则起源于“windows controls”这个概念,见:http://msdn.microsoft.com/en-us/library/windows/desktop/bb773173%28v=vs.85%29.aspx),“component”还是翻译成组件更合适。
另外,从语言的角度来看,组件本身就是功能类(反之则不一定成立),功能类的用法都可以适用于组件(如果你想这么用的话),在我看来,一个功能类是否需要写成组件,主要是看它的功能复杂度和使用时的持久性,简单说就是“复用度”,如果比较简单、临时使用一下的功能,象TStringList,就不需要写成组件,反之,象Indy的TIdTcpServer、TIdUdpServer,写成组件则比较合适。