![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с выбором предка для класса. Как сделать такое? [D7, WinXP]
DVM © (2006-11-13 16:29:00)Надо создвать во множестве окна с определенными свойствами. Создавать программно.
Надо описать класс:
TMyForm = class(TForm)
private
public
published
end;
Но TForm не подходит в качестве предка, т.к. нужен в таком случае еще dfm файл, без которого хотелось бы обойтись.
Как такое лучше осуществить? Т.е. без dfm файла? Возможно ли?
Игорь Шевченко (2006-11-13 17:04:00) [1]Джо © (13.11.06 16:46) [4]
Спасибо, не знал. Я руками делал честно. Потребовалось для уменьшения количества юнитов в проекте (и такие задачи встречаются). Мелкие формы используемые в одном месте, переехали в такой код
Джо (2006-11-13 16:46:00) [2]Отличная штука есть в эксперте GeExperts. Там можно, расставить все контролы как обычно, мышкой, а затем, применив соответствующую команду, получить в Буфере Обмена код, создающий все эти контролы программно, наподобие [1] Игорь Шевченко ©.
Очень удобно. Иногда пользуюсь.
DVM (2006-11-13 16:43:00) [3]
> Игорь Шевченко © (13.11.06 16:34) [1]
Спасибо, я вместо CreateNew(AOwner); пытался использовать inherited Create(AOwner); в результате с меня требовали файл ресурсов. Так все получилось.
Anatoly Podgoretsky (2006-11-13 16:36:00) [4]> DVM (13.11.2006 16:29:00) [0]
Подходит, ему dfm файл не нужен, а нужен он для TMyForm
Игорь Шевченко (2006-11-13 16:34:00) [5]
> Как такое лучше осуществить? Т.е. без 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.