对VCL稍稍改动的编程方法问题请教(200分)

  • 主题发起人 whsuperboy
  • 开始时间
W

whsuperboy

Unregistered / Unconfirmed
GUEST, unregistred user!
问题1。
我先在窗体上放几个label,然后在声明部分写:
type Tmylabel=class(tlabel)
public
mystring:string;
end;
然后把代码中的label1:Tlabel,label2:tlabel都改成label1:Tmylabel,label2:Tmylabel。
编译时出错,说"label1应该声明成Tlabel但却声明成Tmylabel,是否更正?"。请问怎样才能
在把Tlabel变成Tmylabel。(不想改tlabel源码,因为同样的情况,有的控件没有源码)
是不是只有把Tmylabel做成vcl放在delphi控件面板上才行?能不能在程序unit里面简单的变换?
问题2.
我做好了一个Tform1,我想把其他的form都继承Tform1,方便编程。就是
Tform2=class(Tmyform1),我这样手工改了之后,编译没有问题,但是设计状态下,在
form2上看不到Tform1上的控件,不好修改,如何才能看到Tform1上的控件?或者如何才是
正确的做法?
 
1>除了改pas外还要改dfm,那个提示就是提示这个
但是因为你这个类还没有注册,可能这样也不行,最好是写成控件安装
2>TForm及子类是没法安装到控件面板的.
要做成向导
 
1、最好做成控件,这样要简单的多
2、继承的最佳做好是,file --> new -->
这里有个你所建程序页(如Project1) 选中它 --> 选中你要继续的窗体(form1)-->OK
 
改错地方了 [:D]
你应该改DFM文件,而不是改Pas文件
在IDE中,改了DFM文件后再返回Pas(alt + F12),再保存的时候Delphi就会问你声明是
不是要改成你的TMylabel了,这时点是就OK了
当然如果你两个地方同时改,就不会有这样的提示。
找个查找替换软件,把你工程目录下的所有Tlabel改成TMyLabel就行了
当然别忘了加上对你的单元的引用。
 
感谢2位。
很多时候,我只是想在一个unit临时给某个vcl增加一个属性,如果每个改动都要做成一个控
件的话,岂不是很繁琐?
 
type Tmylabel=class(tlabel)
public
mystring:string;
end;
改为
type
TLabel = class(StdCtrls.TLabel)
public
mystring:string;
end;
不要改其他任何地方,就可以了。
 
多人接受答案了。
 
顶部