这么简单的问题难道都没人知道吗?如何用最简单的方法改动代码,使一个窗口类名前面不用“T” ( 积分: 33 )

  • 主题发起人 主题发起人 YuZi
  • 开始时间 开始时间
Y

YuZi

Unregistered / Unconfirmed
GUEST, unregistred user!
如题。突然想到这么一个问题,比如我的已有Form类实例名为abc,那其对应的类名就是“TAbc”,有什么办法使前不是用“T”呀,当然改动代码越少越好。谁有好办法?
 
如题。突然想到这么一个问题,比如我的已有Form类实例名为abc,那其对应的类名就是“TAbc”,有什么办法使前不是用“T”呀,当然改动代码越少越好。谁有好办法?
 
最简单的方法啊。。。。你重新从TABC里继承出个新的类,名字不带T的,比如aaa

type
aaa=class(TAbc)
然后改unit里对FORM声名的那部分
var
abc: aaa;
 
谢谢!但是这样子类化的方法要改写很多代码。因为TForm 不像其它类。。。
 
这还用改很多代码? 你直接一替换不就行了?? 就是改个名字,没有新方法。。
 
同意楼上
可以试试先
 
打开view菜单里的code explorer,在这里面可以看见code树。在tform***上点右键,有rename菜单项。
 
to hs-kill:比如一个空白Form1,它的类名为TForm1,它上面放了很多控件,已经是完成的软件窗口,我现在是要让TForm1改成其它其它类名如MyForm,不是要用代码建一个类,再去建什么,或者是封装成控件什么的。

to dnoopy:这样也是不行的,你试试,Delphi会自动在名字前面加一个"T"的
 
直接子类化是不行的,我举个例子,如:
type
TForm1= Class(TForm)
...
end;
TABC = Class(TForm1); //子类化
var
Form1 : TABC;

这样做看上去行,但其实Form1的类名仍然是TForm1,根本就没有变。
 
想做什么?
 
// ................................

type
TForm1 = class(TForm)
end;

TMzLiu = class(TForm1)
end;

var
Form1: TMzLiu;

// ................................

program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TMzLiu, Form1); // **
Application.Run;
end.
 
只改系统级窗口类名:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm1 = class(TForm)
procedure CreateParams(var Params: TCreateParams); override;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WinClassName := 'MzFrm';
end;

end.
 
麻子兄果然不一般!
我怎么就是想不到点上呢,郁闷~~~~~~~
也谢谢几位朋友,因为分数不多,对不起各位了,请原谅!
 
抱歉,我实在不服气也不明白我说的方法和刘麻子说的有什么不一样~谁还愿意来说明一下,小生在这里多谢了

要是想要分的话提出来我另开个帖子送分
 
麻子人员好,麻子苦了。。。麻子又乐了:(
 
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=3156799
 
后退
顶部