Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.21;
Скачать: CL | DM;

Вниз

А можно ли унаследовать форму из файла   Найти похожие ветки 

 
boa ©   (2003-08-06 08:23) [0]

Хотельсь бы не таскать за собой пасовский файл а использовать .DCU в которой находится радительская форма.


 
Кот Бегемот ©   (2003-08-06 09:05) [1]

А попробовать перед тем как спрашивать слабО ???


 
boa ©   (2003-08-06 09:38) [2]

В том-то и дело, что пробовал и не вышло. Дельфя ругается на то что не может найти прорадителя!!!


 
PVOzerski ©   (2003-08-06 10:33) [3]

Я вот сейчас немного поэкспериментировал. Вот что получилось (D3):

unit Unit1;

interface

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

type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
uses
Unit2;
{$R *.DFM}

end.

unit Unit2;

interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Unit1, stdctrls;
type
tMyForm=class(tForm1)
Button1:tButton;
public
constructor Create(Owner:tComponent);override;
end;
implementation
constructor tMyForm.Create(Owner:tComponent);
begin
inherited;
Button1:=tButton.Create(Self);
Button1.parent:=Self;
end;
end.


program Project1;

uses
Forms,
Unit1 in "Unit1.pas" {Form1},
Unit2 in "Unit2.pas";

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(tMyForm, Form1);
Application.Run;
end.



 
PVOzerski ©   (2003-08-06 10:43) [4]

P.S. "uses unit 2" в Unit1 - тяжкое наследие моих экспериментов :^). На самом деле ни к чему.


 
boa ©   (2003-08-06 11:46) [5]

program Project1;

uses
Forms,
Unit1 in "Unit1.pas" {Form1},
Unit2 in "Unit2.pas";

{$R *.RES}

А как бы только с Unin1.dcu


 
PVOzerski ©   (2003-08-06 12:01) [6]

Ну, такое тоже работает:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
private
{ Private declarations }
public
( tForm1) Ну, такое тоже работает:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;

implementation

{$R *.DFM}

end.

unit Unit2;

interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Unit1, stdctrls;
type
tMyForm=class(tForm1)
Button1:tButton;
public
constructor Create(Owner:tComponent);override;
end;
var
MyForm:tMyForm;
implementation
constructor tMyForm.Create(Owner:tComponent);
begin
inherited;
Button1:=tButton.Create(Self);
Button1.parent:=Self;
end;
end.

program Project1;

uses
Forms,
Unit2 in "Unit2.pas";

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(tMyForm, MyForm);
Application.Run;
end.

Правда, обратите внимание на то, что я вручную (в конструкторе) инициализирую контролы (Button1).


 
boa ©   (2003-08-06 15:09) [7]

>PVOzerski

А теперь попробуйте удалить "Unit1.dfm" и "Unit1.pas" и открыть проект.


 
PVOzerski ©   (2003-08-06 15:21) [8]

.DFM-то нужен, а вот unit1.pas - уже нет.


 
Anatoly Podgoretsky ©   (2003-08-06 15:31) [9]

boa © (06.08.03 15:09)
Стоп, где в товоем вопросе была речь про dfm?


 
boa ©   (2003-08-06 16:02) [10]

Речь-то и шла про ".dcu"
Ну, в принципе, большой нужды удалять ".dfm" нет (я уж всяко перепробовал).
Но без unit1.pas (если его удалить) у меня при открытии проекта Дельфя ругается:
"Error creating form: Ancestor for "TForm1" not found."
Может у меня чего-нибудь в установках не так (если у вас все прекрасно прокатывает)


 
PVOzerski ©   (2003-08-06 16:08) [11]

У меня на D3 и D6 "прокатывает".


 
Семен Сорокин ©   (2003-08-06 16:08) [12]

boa © (06.08.03 16:02)
убери Unit1 из Uses в DPR.


 
boa ©   (2003-08-06 16:30) [13]

Вот код, который я использую:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}

end.


unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Unit1;
type
TForm2 = class(TForm1)
private
{ Private declarations }
public
( TForm2, Form2) Вот код, который я использую:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}

end.


unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Unit1;
type
TForm2 = class(TForm1)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.DFM}

end.


program Project1;
uses
Forms,
Unit2 in "Unit2.pas" {Form2};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm2, Form2);
Application.Run;
end.

--------------------
запускаться он запускается
Но Дельфя ругается и не позволяет открыть форму TForm2 в дизайнтайме


 
boa ©   (2003-08-06 16:31) [14]

Да забыл добавить что это происходит, когда я закрою проект, а потом снова его открою!


 
boa ©   (2003-08-07 06:50) [15]

Ау!
Хоть скажите - у вас с этим кодом тоже нет проблем ????



Страницы: 1 вся ветка

Текущий архив: 2003.08.21;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
1-68265
seregin
2003-08-07 08:30
2003.08.21
Замена Firebird на Yaffil


3-68220
Insider
2003-07-24 01:30
2003.08.21
Синхронное изменение полей типа Date


3-68237
Romann
2003-07-26 09:57
2003.08.21
Таблицы FoxPro


1-68282
Evg12
2003-07-30 16:30
2003.08.21
Помогите решить проблему с ProgressBar


3-68153
Grac
2003-07-25 15:56
2003.08.21
QReport - Номер страницы