很菜的问题高手来拿分(200分)

  • 主题发起人 主题发起人 karxios
  • 开始时间 开始时间
K

karxios

Unregistered / Unconfirmed
GUEST, unregistred user!
想通过修改....delphi/source 中的代码来改变某个控件的属性 是不是修改完把它随便加入一个工程
然后把.dcu文件copy到 .../lib目录中??
为什么我的修改不起作用? 还要做什么别的吗?

 
你这么做当然不行!
必须重新编译相应控件包,再重新安装控件包才可以的
 
你把SOURCE中的.DPK文件打开,修改完里面的代码后,将该DPK文件重新COMPILE和INSTALL
就可以了,不过这样该DELPHI本身带的控件代码很危险的,一旦改坏了就不能用了,建议
你把要改的代码拷出来,写一个新的控件,然后把这个新控件安装使用。
 
赞成楼上的
 
如果只是你的程序中用到,你最好不要改Delphi自己的,你可以将那个PAS文件COPY到你这个
专案的目录下面,再在PAS中作修改,这样你修改的内容对你的程序就有效了,但并没有改到
Delphi自身的,这是比较安全些.
如果你要彻底改变Delphi的,下面是从以前的答案找出来的,懒得打字了.呵呵...
1、建立项目
2、用Project Manager把你改的程序ADD进项目
3、用REBUILD ALL
4、做好原来LIB目录下DCU的备份
5、关闭DELPHI
6、把新的DCU复制到LIB目录覆盖原来的文件
7、启动DELPHI
8、如果有问题则恢复原DCU否则OK!
注:保留原来的DCU文件,当你用DELPHI正常运行一周以上才删除原DCU!
 
楼上的都说完了
 
我还有不明白的地方,请各位继续帮忙;
我先把问题说明一下 请大家出主意 我要解决的是quickreport中dbtext的中文换行问题,因为控件本身是
遇到' '或'-'就换行的,我的数据中有大量的' '和'-',遇到这些打印就会在不该换的地方换行,我不能改数据,
而且数据有的很长要换行,使用起来很费事,曾经通过计算字段解决,但是很麻烦,还引起其他问题.
通过看源码,我发现dbtext继承TQRCustomLabel,TQRCustomLabel中的FormatLines函数就有关于换行的代码 ,主要
是这些:
......
const
BreakChars : set of Char = [' ',#13,'-'];
.......
do
......
until (Line[J] in BreakChars) or (J >= Length(Line));
我觉得只要把上面的一句改为 until (j>width) or (J >= Length(Line));就可以解决所有问题
但我改过后无法安装 ,出错信息是.....another packge with the same base name has been loaded

我也想把这个函数重载,但是它里面用到了好多变量是在 private 单元声明的 我觉得没有办法重新
copy过来, 到底应该怎么做?还有没有其他办法?


水平太低 ,望高手指教
 
if more private to use, create a new component of TQRCustomLabel,
copy all items of dbtext to this new component, and alter that line,
and compile and install. use new component instead of dbtext every where.
 
你新建一个COMPONENT,然后把TDBTEXT类的所有声明及实现都拷贝出来粘到这个新建的
COMPONENT里,给这个类重新起个类名称,比如MYDBTEXT等等,然后把你要修改的地方改好
保存,最后把这个控件安装上就行了。我曾经改写过DELPHI的TREEVIEW控件,就是这么干的
 
楼上都说了,完全同意
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部