Форум: "Основная";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
ВнизПомогите с выбором предка для класса. Как сделать такое? Найти похожие ветки
← →
DVM © (2006-11-13 16:29) [0]Надо создвать во множестве окна с определенными свойствами. Создавать программно.
Надо описать класс:
TMyForm = class(TForm)
private
public
published
end;
Но TForm не подходит в качестве предка, т.к. нужен в таком случае еще dfm файл, без которого хотелось бы обойтись.
Как такое лучше осуществить? Т.е. без dfm файла? Возможно ли?
← →
Игорь Шевченко © (2006-11-13 16:34) [1]
> Как такое лучше осуществить? Т.е. без dfm файла? Возможно
> ли?
Возможно, но заполнять форму контролами придется руками
Я делал примерно так:unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
public
constructor Create (AOwner: TComponent); override;
procedure AfterConstruction; override;
end;
var
Form1: TForm1;
implementation
procedure TForm1.AfterConstruction;
begin
inherited;
HandleNeeded;
Left := 192;
Top := 107;
Width := 696;
Height := 480;
Caption := "Form1";
Label1:= TLabel.Create(Self);
Label1.Parent := Self;
with Label1 do begin
Left := 28;
Top := 16;
Width := 32;
Height := 13;
Caption := "Label1";
end;
Edit1 := TEdit.Create(Self);
Edit1.Parent := Self;
with Edit1 do begin
Left := 80;
Top := 16;
Width := 121;
Height := 21;
TabOrder := 0;
Text := "Edit1";
end;
Button1 := TButton.Create(Self);
Button1.Parent := Self;
with Button1 do begin
Left := 52;
Top := 56;
Width := 75;
Height := 25;
Caption := "Button1";
TabOrder := 1;
OnClick := Self.Button1Click;
end;
DoCreate;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text := "";
end;
constructor TForm1.Create(AOwner: TComponent);
begin
CreateNew(AOwner);
end;
end.
← →
Anatoly Podgoretsky © (2006-11-13 16:36) [2]> DVM (13.11.2006 16:29:00) [0]
Подходит, ему dfm файл не нужен, а нужен он для TMyForm
← →
DVM © (2006-11-13 16:43) [3]
> Игорь Шевченко © (13.11.06 16:34) [1]
Спасибо, я вместо CreateNew(AOwner); пытался использовать inherited Create(AOwner); в результате с меня требовали файл ресурсов. Так все получилось.
← →
Джо © (2006-11-13 16:46) [4]Отличная штука есть в эксперте GeExperts. Там можно, расставить все контролы как обычно, мышкой, а затем, применив соответствующую команду, получить в Буфере Обмена код, создающий все эти контролы программно, наподобие [1] Игорь Шевченко ©.
Очень удобно. Иногда пользуюсь.
← →
Игорь Шевченко © (2006-11-13 17:04) [5]Джо © (13.11.06 16:46) [4]
Спасибо, не знал. Я руками делал честно. Потребовалось для уменьшения количества юнитов в проекте (и такие задачи встречаются). Мелкие формы используемые в одном месте, переехали в такой код
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c