关于FORM继承的问题,请进来讨论!(50分)

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

wzqin

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个关于FORM继承的DEMO,运行时正常,但我想让子窗体在编辑时就将继承父窗体
的东西显示出来,也就是说假如父窗体上有一个按钮,则在编辑状态时子窗体上将此按钮
显示出来,而不只是运行时才有显示。我现在的DEMO是只在运行时才有显示。请问如何解决?
是不是要在哪里进行设置?我见过别人做的,但不知如何做。
 
高手哪里去了?帮帮忙啊~~~~~
 
编辑的时候,子窗体是会看到父窗体中的所有控件的,只是可以在运行时将控件的visible
属性设为False使到其不可见
 
to catfox:可我这里看不到呀?为什么?运行时倒很正常,我做的DEMO如下,请帮忙看一下:
主窗体, 上有两个按钮,分别进入父窗体和子窗体:
unit Umain;

interface

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

type
TMainForm = class(TForm)
gotofather: TButton;
gotochild: TButton;
Label1: TLabel;
procedure gotofatherClick(Sender: TObject);
procedure gotochildClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
MainForm: TMainForm;

implementation

uses Ufather, Uchild;

{$R *.dfm}

procedure TMainForm.gotofatherClick(Sender: TObject);
begin
Frmfather.Show;
end;

procedure TMainForm.gotochildClick(Sender: TObject);
begin
FrmChild.show;
end;
end.
父窗体:
unit Ufather;

interface

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

type
TFrmFather = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FrmFather: TFrmFather;

implementation

{$R *.dfm}

procedure TFrmFather.Button1Click(Sender: TObject);
begin
if edit1.Text ='' then
showmessage('error');
end;
end.
子窗体,什么都没有直接继承父窗体:
unit Uchild;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Ufather;

type
TFrmChild = class(TFrmFather)
private
{ Private declarations }
public
{ Public declarations }
end;

var
FrmChild: TFrmChild;

implementation

{$R *.dfm}

end.
 
delphi bug,restart!
 
呵呵,看不到才有问题,继承后空件总是能看到的
呵呵,实在不行就听楼上的冲撞吧
 
不会吧,我试过几次都这样,那我重启一下试试了,请各位继续关注,谢谢
 
还是不行啊,
窗体继承的时候是不是直接TFrmChild = class(TFrmFather),然后在
interface中uses Ufather就可以了?还有没有其它要做的?我用的是D6,谢谢!
 
右键点击父窗体,选中添加到仓库。把窗体注册到模板仓库。
然后建立子窗体时选“File-New”然后到模板中选取你刚才注册的就行了。
 
不要写代码的
file--> new -->other
里面有个刚刚你建立的如project1,进去后选中你要继承自的窗口,ok
 
谢谢wr960204和一少,我还想问一下继承窗体一定要这么做吗?
 
你是手工添代码实现继承的把?

你可以使用楼上的方法,不过其实不要那么麻烦,delphi自动为当前的项目建了一个模版。
假如你的工程名是demo的话,你去file->new->others->demo页,
里面就是你所有的窗体,然后你选择fatherForm。然后确定。

这样New的窗体就是继承自fatherForm
 
谢谢以上各位,最后问一个问题,解决后马上结贴分分!
刚才我将父窗体添加到仓库的时候,添加到了Forms下面怎么删除掉?也就是现在每次
File->new->others->Forms中多了一个FrmFather,怎么去掉?
 
你只改了pas文件,你把dfm改一下就可以了
inherited FrmChild: TFrmChild
inherited Button1: TButton
.......
 
多人接受答案了。
 
后退
顶部