Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ООП - Как создать собственный объект для формы? [D7, XP]


Doctor DOOM ©   (2006-01-26 07:47:00) 

Добрый день дорогие товарищи. Я новенький. Разбираюсь.

Итак задача: Требуется создать объект, который будет включать в себя  TImage, TEdit, TLabel, TButton; Для экспериментов сделал пока только TLabel. Остальное буду делать по аналогии. Таких объектов может быть заранее неизвестное множество.

Вопрос: как сделать так, что бы мой объект стал, виден на форме:

До чего дочитался, и что делаю:

Главная форма:

type
 TFMain = class(TForm)
    procedureFormCreate(Sender: TObject);
  private
  public
  lab: TAutoMobile;
  end;
varFMain: TFMain;

procedure TFMain.FormCreate(Sender: TObject);
begin
  Auto:=TAutoMobile.Create(fmain); // Auto как я понимаю и есть объект класса TAutoMobile ??? Родителем данного объекта будет моя форма FMain?
end;

Здесь я не совсем еще разобрался, в чем разница между.

TAutoMobile.Create(fmain)

и

TAutoMobile.Create(self)

Кто может, поясните доходчиво, пожалуйста. А то в книжках, статьях, как-то все расплывчато, понять ни как не могу. Лучше на пальцах [с примером]. Извиняюсь за даунизм.

Далее в отдельном Unit создаю класс, где описываю все, что данный объект должен уметь делать а также все его свойства и методы.

     TAutoMobile=class(TCustomControl)
     LabelDriver : TLabel;
     public
     constructor Create(AOwner:TComponent); virtual;
     end;

implementation

constructor TAutoMobile.Create(AOwner:TComponent);
begin
  inherited Create(AOwner);
  LabelDriver:=TLabel.Create(Self);
  LabelDriver.Caption  :='123';
  LabelDriver.Parent   :=self;// вот тут как раз и вопрос. Почему вылетает ошибка?
// либо как правильно сделать, так что бы объект стал, виден на форме? (FMain).
end;


А может, есть на много проще вариант решения данного вопрос.


Плохиш   (2006-01-26 11:56:00) [1]


> Здесь я не совсем еще разобрался, в чем разница между.
>
> TAutoMobile.Create(fmain)

Все созданные таким способом объекты будут принадлежать конкретному экземпляру формы или никому. Этот способ является 100% созданием глючных (неработоспособных) программ, советую забыть его как страшный сон.

> TAutoMobile.Create(self)

Созданный объект принадлежит тому экземпляру формы, в для которого он и создавался.
Также имеется свойство Parent, которое указывает объект, отвечающий за отображение, создаваемого.


Сайбель Алексей   (2006-01-26 09:46:00) [2]

Если это просто TImage, TEdit, TLabel, TButtonпосмотри в сторону Templates (Component -> Create Component Template...)


beglec   (2006-01-26 08:46:00) [3]

уже. Прикольная штука.


beglec   (2006-01-26 08:46:00) [4]

спасибо доктор доом - твой вопрос помог самому разобраться что к чему :)


MBo   (2006-01-26 08:10:00) [5]

Обрати внимание на фреймы (TFrame)


beglec   (2006-01-26 07:49:00) [6]

корректировка
lab=Auto


Наверх

Титульная страница Поиск, карта сайта Написать письмо