![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание элемента "из воздуха" [D5, WinME]
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;
Ошибка. Причем концептуальная ;)