关于控件的非技术问题,回答对就给分!

时间:2021-03-23 12:03:52
1。我作了一个带有属性编辑器的新控件(我使用了DsgnIntF.pas,而且编译和安装也没有出错),在程序设计时,我使用这个控件,可是运行时,他的编译信息说找不到DsgnIntF.dcu文件,怎么回事?
2。我的新控件想使用自己的图标,就自己用image edit 作了一个图标,可是装载时图标没有变,还是默认的图标,怎么回事?

13 个解决方案

#1


没有知道吗?

#2


图标名和控件名一定要相同.
在搜索路径中指定.

#3


怎么又是这个...
.             单元DsgnIntf改名及相关变化

程序中对于DsgnIntf的引用,需要改为对一个新的单元的引用:DesignIntf。可能还得加上DesignEditors、Editors 和RTLConsts 几个单元到你的引用列表中。除此之
外你还得将designide加入到你的包的Requires的列表中。另外,对dsnide50的引用可能得手动改为DesignIde,如果Delphi没有自动更改的话。

      任何引用了IDesigner的运行期包,需要改为IDesignerHook以防止运行期时对于designide单元的引用要求。在运行期代码中,IDesignerHook 功能足够使用,
无需担心。设计期时可以使用IDesigner,如以下代码一样:

var

 RealDesigner: IDesigner;
...
SomeDesignerHook.QueryInterface(IDesigner,RealDesigner);
...

来获得IDesignerHook 提供的IDesigner的接口。IDesinerHook的使用只需要引用Classes和Forms两个单元。但是IDesigner还得加上DesignIntf单元
,由于该单元被包含在许多其它包中,而其中的一些包可能是不能二次分发的。

#4


可是我用的是delphi5,可以找到DsgnIntF.pas,找不到DedignIntF
你后面写的我好像看不懂给个例子好不好,或者说的详细点!

#5


1.你在lib文件夹里没这个dcu文件
2.图标的索引要一致...又或者图标太大了..你试把imagelist的width和height设大一点.

#6


新建一个工程,从DsgnIntf所在目录加入DsgnIntf,不写任何代码,直接按F9,就可在ToolsApi目录下得到DsgnIntf

#7


chenlj(CHEN)
1.你的分析我同意,可是需要吗,其他的都不是.pas文件,又没说要.dcu文件,比如windows,messages
2.我没有用imagelist我使用的是delphi自带的image edit画的32*32的文件

#8


Windows,messages的dcu文件在Lib下都有的,而且DELPHI用的都是.dcu文件

#9


那么怎么没有DsgnIntF.dcu呢,只有DsgnIntF.pas呢?

#10


1、DsgnIntF.dcu 问题:
  Envirment options\Library path: 加入Delphi\...\DsgnIntF.pas文件所在路径即可。
2、不显示控件图标问题:
  比如你控件类名是TMyButton
  文件名是:mybutton.pas
  那么你图标应该是24*24像素大小的,图标名应该是
TMYBUTTON,dcr文件名应该是mybutton.dcr.
  然后从你.dpk包里先删除你的mybutton.pas重新加入mybutton.pas你就看到
mybutton.pas
mybutton.dcr
同时加到你工程,编译即可!

#11


1.你的第一个问题只能说是解决了.pas文件,没有解决.dcu问题,另外我在编译控件时没有出现这个问题(找不到DsgnIntF.dcu)
2.我按照这样做了可是好象不行,还是原来的!是不是要改两个地方一个是文件名mybutton.dcr,还有是图标改成MYBUTTON

#12


回答得都不对,让我怎么给分!

#13


等吃玩饭再说吧

#1


没有知道吗?

#2


图标名和控件名一定要相同.
在搜索路径中指定.

#3


怎么又是这个...
.             单元DsgnIntf改名及相关变化

程序中对于DsgnIntf的引用,需要改为对一个新的单元的引用:DesignIntf。可能还得加上DesignEditors、Editors 和RTLConsts 几个单元到你的引用列表中。除此之
外你还得将designide加入到你的包的Requires的列表中。另外,对dsnide50的引用可能得手动改为DesignIde,如果Delphi没有自动更改的话。

      任何引用了IDesigner的运行期包,需要改为IDesignerHook以防止运行期时对于designide单元的引用要求。在运行期代码中,IDesignerHook 功能足够使用,
无需担心。设计期时可以使用IDesigner,如以下代码一样:

var

 RealDesigner: IDesigner;
...
SomeDesignerHook.QueryInterface(IDesigner,RealDesigner);
...

来获得IDesignerHook 提供的IDesigner的接口。IDesinerHook的使用只需要引用Classes和Forms两个单元。但是IDesigner还得加上DesignIntf单元
,由于该单元被包含在许多其它包中,而其中的一些包可能是不能二次分发的。

#4


可是我用的是delphi5,可以找到DsgnIntF.pas,找不到DedignIntF
你后面写的我好像看不懂给个例子好不好,或者说的详细点!

#5


1.你在lib文件夹里没这个dcu文件
2.图标的索引要一致...又或者图标太大了..你试把imagelist的width和height设大一点.

#6


新建一个工程,从DsgnIntf所在目录加入DsgnIntf,不写任何代码,直接按F9,就可在ToolsApi目录下得到DsgnIntf

#7


chenlj(CHEN)
1.你的分析我同意,可是需要吗,其他的都不是.pas文件,又没说要.dcu文件,比如windows,messages
2.我没有用imagelist我使用的是delphi自带的image edit画的32*32的文件

#8


Windows,messages的dcu文件在Lib下都有的,而且DELPHI用的都是.dcu文件

#9


那么怎么没有DsgnIntF.dcu呢,只有DsgnIntF.pas呢?

#10


1、DsgnIntF.dcu 问题:
  Envirment options\Library path: 加入Delphi\...\DsgnIntF.pas文件所在路径即可。
2、不显示控件图标问题:
  比如你控件类名是TMyButton
  文件名是:mybutton.pas
  那么你图标应该是24*24像素大小的,图标名应该是
TMYBUTTON,dcr文件名应该是mybutton.dcr.
  然后从你.dpk包里先删除你的mybutton.pas重新加入mybutton.pas你就看到
mybutton.pas
mybutton.dcr
同时加到你工程,编译即可!

#11


1.你的第一个问题只能说是解决了.pas文件,没有解决.dcu问题,另外我在编译控件时没有出现这个问题(找不到DsgnIntF.dcu)
2.我按照这样做了可是好象不行,还是原来的!是不是要改两个地方一个是文件名mybutton.dcr,还有是图标改成MYBUTTON

#12


回答得都不对,让我怎么给分!

#13


等吃玩饭再说吧