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

Вниз

Помогите с выбором предка для класса. Как сделать такое?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.035 c
3-1161114857
_Ламер_
2006-10-17 23:54
2006.12.31
dll - не признаёт БД


3-1161267156
LexaR
2006-10-19 18:12
2006.12.31
Поддерживает ли FB 2.0 выборку из процедур.


9-1140905412
KreeS
2006-02-26 01:10
2006.12.31
Z-Order


2-1165995193
Neket
2006-12-13 10:33
2006.12.31
Запрос POST


5-1146130114
denison
2006-04-27 13:28
2006.12.31
Circular Reference