Форум: "Основная";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
ВнизА можно ли унаследовать форму из файла Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.119 c