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

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

Создание элемента "из воздуха" [D5, WinME]


Страницы:   1 2

NightStranger ©   (2005-02-04 14:55:00) 

Доброго времени суток. Подскажите, плиз, как сделать так, чтобы, предположим, при нажатии на кнопку на форме СОЗДАВАЛАСЬ, например, Label'ка. Не могу разобрасться в функциях Create и т.п.
Покажите, плиз, пример кода. Спасибо


Fay   (2005-02-09 03:51:00) [1]

SergP.   (08.02.05 20:40) [24]
Если некий экземпляр TForm1 хочет присвоить себя в качестве Parent (да хоть жуярент) какому-либо контролу, то надо писать не Form1, а Self, т.к. Form1 - просто некоторая переменная (возможно, пожходяшего типа) имеющая некоторое (в общем случае - произвольное) значение.

Вы всё ещё кипятите?


Юрий Зотов   (2005-02-08 21:13:00) [2]

> NightStranger

Зайдите по ссылке [4], внимательно прочтите статью - и все вопросы исчезнут навсегда.


SergP.   (2005-02-08 20:40:00) [3]


> Defunct ©   (08.02.05 18:11) [23]
> > MacroDenS ©   (04.02.05 15:41) [11]
> >> to Ошибка. Причем концептуальная ;)
> > знаю, но работать то будет?
>
> Не будет.
>


Но все же работает... :-)))


Defunct   (2005-02-08 18:11:00) [4]

> MacroDenS ©   (04.02.05 15:41) [11]
>> to Ошибка. Причем концептуальная ;)
> знаю, но работать то будет?

Не будет.

Вчитайтейсь в то что вы там намутили:

Procedure form1.Button1Click(sender: TObject);
begin
 lbl:=Tlabel.Create(self);
 lbl.parent:= Form1;


begin...end   (2005-02-08 18:08:00) [5]

> msguns ©   (08.02.05 17:17) [21]

> при использовании "динамической" модели объекта в коде
> нельзя обращаться к свойствам и методам экземпляра
> объекта, а лишь к свойствам и методам класса

То есть, ДО создания объекта? Ну так это и понятно - объект-то ещё не создан.


msguns   (2005-02-08 17:17:00) [6]

Разница в этих двух условных типах объектов есть, и весьма существенная и выражается в том, что при использовании "динамической" модели объекта в коде нельзя обращаться к свойствам и методам экземпляра объекта, а лишь к свойствам и методам класса, в то время как при "статической" модели можно.
А при выполнении, действительно, разницы никакой нет.


msguns   (2005-02-08 17:10:00) [7]

>Алхимик ©   (08.02.05 14:56) [17]
>Наверно имеется ввиду AutoCreate?

Да.

>Digitman ©   (08.02.05 15:06) [19]
>и где написано, что действия Визарда в этом случае имеют отношения к некоей "статике" ?

Этот "термин" я подсмотрел у Мастеров этого же форума. Мне кажется, что он подходит как антипод "динамическому", когда речь идет о технологии создания объектов: во время конструирования (автоматически создаваемых при запуске приложения и затем разрушаемых только по завершению приложения) или во время выполнения (создание формы по соотв.событию и уничтожение ее по закрытию).
Т.е. можно сказать и так:
"Статическим" объектом условно называются объекты, создаваемые один раз (как правило при запуске программы) и существующие все время, пока выполняется приложение
"Динамическим" объектом условно называются объекты, создаваемые и уничтожаемые по мере необходимости.
Т.е.статическая форма существует в единственном экземпляре все время с момента запуска приложения до момента его завершения, в то время как динамическая форма может создаваться и уничтожаться произвольное кол-во раз и существовать в произвольном кол-ве экземпляров.


Digitman   (2005-02-08 15:06:00) [8]


> Алхимик ©   (08.02.05 14:56) [17]
> Наверно имеется ввиду AutoCreate?


и где написано, что действия Визарда в этом случае имеют отношения к некоей "статике" ?


Digitman   (2005-02-08 15:02:00) [9]


> NightStranger ©   (08.02.05 14:54) [16]


как хочешь, так и понимай.

форма есть объект класса TForm или его наследника.

время жизни объекта отсчитывается от времени успешного вызова конструирующего метода класса

конструирующий метод класа вызывается не иначе как в run-time или design-time

design-time по сути не отличается от run-time


Алхимик   (2005-02-08 14:56:00) [10]

[15] Digitman ©   (08.02.05 14:51)
Наверно имеется ввиду AutoCreate?
[14] NightStranger ©   (08.02.05 14:35)
Создаю и показываю форму:
  with TfrmAbout.Create(nil) do begin
     try
        ShowModal;
     finally
        Free;
     end;
  end;

Попробуй по методу [3] создать на ней компоненты - все поймешь.


NightStranger   (2005-02-08 14:54:00) [11]

А как тогда понимать msguns ©   (04.02.05 16:01) [12]


Digitman   (2005-02-08 14:51:00) [12]


> NightStranger ©   (08.02.05 14:35) [14]
> чем статически создаваемая форма отличается
> от динамически создаваемой?


ничем.
БОЛЕЕ того - нет никаких "статически создаваемых форм".


NightStranger   (2005-02-08 14:35:00) [13]


> Только на статически созданной форме. На динамически создаваемых

еще один вопрос: чем статически создаваемая форма отличается от динамически создаваемой?


MacroDenS   (2005-02-04 16:16:00) [14]

Да это то я знаю, (просто подтверждаю).
А так на самом деле, нужно же что бы и автор мозгами немного пораскинул (в хорошем смысле).


msguns   (2005-02-04 16:01:00) [15]

>MacroDenS ©   (04.02.05 15:41) [11]
>знаю, но работать то будет?

Только на статически созданной форме. На динамически создаваемых.. попробуй, посмотришь. Когда насмеешься вдоволь, придешь сюда поделиться впечатлением.


MacroDenS   (2005-02-04 15:41:00) [16]

to Ошибка. Причем концептуальная ;)
знаю, но работать то будет?

А там глядишь, автор подрастет, поумнеет, да и допрет че к чему.


msguns   (2005-02-04 15:13:00) [17]

>NightStranger ©   (04.02.05 15:09) [9]

Да, любой контейнерный объект.


NightStranger   (2005-02-04 15:09:00) [18]


> lbl.parent:=Form1;

это типа родителя что ли? Т.е. на чем будет создаваться лэйбл. Я правильно понял? Если да, то в принципе можно задавать в качестве parent'a и panel, и GroupBox. Так?


msguns   (2005-02-04 15:08:00) [19]

>NightStranger ©   (04.02.05 15:03) [5]
> Parent := Self; а что это за параметр?

Если не сказать форме, что лабелька ее "дитятко", то она не додумается "прописать" (нарисовать) ее в своей "квартире" (канве).


msguns   (2005-02-04 15:05:00) [20]

>MacroDenS ©   (04.02.05 15:01) [3]
>  lbl.parent:=Form1;

Ошибка. Причем концептуальная ;)


Страницы:   1 2

Наверх

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