曾经在一本书上看到说delphi自动use单元的时候是根据类的RTTI信息的UnitName来添加…… (50分)

  • 主题发起人 QQ989753
  • 开始时间
Q

QQ989753

Unregistered / Unconfirmed
GUEST, unregistred user!
A单元中有一个类TA,B单元中有一枚举类型TB=(amCust,amOffice,amCurr),A有一个属性P
为TB类型的,把TA作为组件注册到Delphi面板上。这时,当把这一组件加到新窗体中时,
新窗体所在单元会自动uses A,而当对A的P属性进行赋值时,直接写A1.P := amCust;是不
行的,因为,窗体所在单元没有uses B。那么,我的问题是,在不把B中的类型移到A单元中
的情况下,怎么让组件一拖到窗体中,窗体就自动uses 了A,B两个单元。也就是让组件用
起来没有那么烦,让用户去打uses B,这太不好了。帮帮我吧,同行们。可能可笑了点,还
请指点一二。
 
在Unit A 中加入
uses unit B就行了。
 
既然组件已经可以注册到Delphi的面板上,说明,A单元已经uses B了。不过,还是谢谢你
的参与。
 
假如你认为一定不能实现,也可以说一句话呀,我在这里“将问题提前”N次了,好累。
 
你在装控件的时候(只装TA)是不是会出现一些警告?(具体什么我就记不清楚了,我也碰到
过类似的问题)
在装控件的时候把B也装进去就行了,就不会报错了
 
将unitB添加在上面的used部分,而不是下面。
试一试吧
 
To wghmy:
B单元中只是一个类型定义,不是组件。
我装控件A时,没有什么问题,而且,这个构件还比较好用呢。就是给A的属性赋值时,……
还得去uses B,不好。
 
to driver:
我就是写在上面了,可还是不行。
另:我一会不提前,就已经看不到影了,大富翁呀,真火。可,能不能让我也热热呀!
 
那照我说的方法行不行?
 
我帮你UP,别忘记我!
 
不行。我在使用A组件时,还是要在使用A组件的窗体所在单元写上uses B,而这,我是我不想
要的,一,当我拖A下来时,自动写这句,二,就是不写这句,估计一是最可能的,只是,不
知道怎么实现
 
to 一剑封喉:不会忘记你。谢了先
 
怎么这么麻烦呀??
晕!!
UP
 
假如在A单元中定义一个类型TC=TB,然后定义A属性为TC,是不是不符合你的要求啊?
 
to BlueWin:直到目前来看,你说的可能是最好的一种了,但系统设计给的是要传这样类型
的参数,比如,你说的TB,我改成了TC,虽说,两者实际上是同一种东东,但,不知道系统
分析员那关能不能过。担心!那家伙,受不了他。
谢谢你,最好再能出一招。
:)
 
可能是我没有说清楚,重说:

unit Label1;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, StdCtrls;
type
TCurr = (RMB,USD,JPY);
type
TLabel1 = class(TLabel)
private
{ Private declarations }
theCurr : TCurr;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Jc', [TLabel1]);
end;

end.

这样的一个控件,现在,我要把
type
TCurr = (RMB,USD,JPY);
这个类型提到一个新的单元中,(这可能是其它模块都要用到的一个单元)
我的问题是,当我把它移到新的单元,例如unitNew,中后,我注册的组件拖到窗体上,
怎么让窗体单元自动uses unitNew?(补:窗体自动加Label1这是很容易的)

这一说明白了吗?
 
我觉得按道理在 unit lable1中写上uses unitnew就应该可以了
 
可是,事实上……,这样吧,更直接一些,如何拖下一个控件,就自动uses多个单元,在哪
设定的?
 

Similar threads

S
回复
0
查看
955
SUNSTONE的Delphi笔记
S
S
回复
0
查看
776
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部