Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
ВнизСоздание элемента "из воздуха" Найти похожие ветки
← →
NightStranger © (2005-02-04 14:55) [0]Доброго времени суток. Подскажите, плиз, как сделать так, чтобы, предположим, при нажатии на кнопку на форме СОЗДАВАЛАСЬ, например, Label"ка. Не могу разобрасться в функциях Create и т.п.
Покажите, плиз, пример кода. Спасибо
← →
msguns © (2005-02-04 15:00) [1]with TLabel.Create(Self) do
begin
Left :=
Top :=
Caption :=
...
Parent := Self;
end;
← →
Чапаев © (2005-02-04 15:00) [2]with TLabel.Create(Self) do begin
Caption:="Бред";
Top:=100;
Left:=120;
Name:="MyLabel";
Parent:=Self;
end;
← →
MacroDenS © (2005-02-04 15:01) [3]если конкретно Label, то так:
var
lbl:TLabel;
....
Procedure form1.Button1Click(sender: TObject);
begin
lbl:=Tlabel.Create(self);
lbl.parent:=Form1;
lbl.top...
lbl.left...
и так далее
end;
С другими компонентами в принципе так же
← →
КаПиБаРа © (2005-02-04 15:02) [4]http://www.delphikingdom.com/asp/viewitem.asp?catalogid=342
← →
NightStranger © (2005-02-04 15:03) [5]
> Parent := Self;
а что это за параметр?
← →
msguns © (2005-02-04 15:04) [6]with TLabel.Create(Self) do
begin
Left :=
Top :=
Caption :=
...
Parent := Self;
end;
← →
msguns © (2005-02-04 15:05) [7]>MacroDenS © (04.02.05 15:01) [3]
> lbl.parent:=Form1;
Ошибка. Причем концептуальная ;)
← →
msguns © (2005-02-04 15:08) [8]>NightStranger © (04.02.05 15:03) [5]
> Parent := Self; а что это за параметр?
Если не сказать форме, что лабелька ее "дитятко", то она не додумается "прописать" (нарисовать) ее в своей "квартире" (канве).
← →
NightStranger © (2005-02-04 15:09) [9]
> lbl.parent:=Form1;
это типа родителя что ли? Т.е. на чем будет создаваться лэйбл. Я правильно понял? Если да, то в принципе можно задавать в качестве parent"a и panel, и GroupBox. Так?
← →
msguns © (2005-02-04 15:13) [10]>NightStranger © (04.02.05 15:09) [9]
Да, любой контейнерный объект.
← →
MacroDenS © (2005-02-04 15:41) [11]to Ошибка. Причем концептуальная ;)
знаю, но работать то будет?
А там глядишь, автор подрастет, поумнеет, да и допрет че к чему.
← →
msguns © (2005-02-04 16:01) [12]>MacroDenS © (04.02.05 15:41) [11]
>знаю, но работать то будет?
Только на статически созданной форме. На динамически создаваемых.. попробуй, посмотришь. Когда насмеешься вдоволь, придешь сюда поделиться впечатлением.
← →
MacroDenS © (2005-02-04 16:16) [13]Да это то я знаю, (просто подтверждаю).
А так на самом деле, нужно же что бы и автор мозгами немного пораскинул (в хорошем смысле).
← →
NightStranger © (2005-02-08 14:35) [14]
> Только на статически созданной форме. На динамически создаваемых
еще один вопрос: чем статически создаваемая форма отличается от динамически создаваемой?
← →
Digitman © (2005-02-08 14:51) [15]
> NightStranger © (08.02.05 14:35) [14]
> чем статически создаваемая форма отличается
> от динамически создаваемой?
ничем.
БОЛЕЕ того - нет никаких "статически создаваемых форм".
← →
NightStranger © (2005-02-08 14:54) [16]А как тогда понимать msguns © (04.02.05 16:01) [12]
← →
Алхимик © (2005-02-08 14:56) [17][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] создать на ней компоненты - все поймешь.
← →
Digitman © (2005-02-08 15:02) [18]
> NightStranger © (08.02.05 14:54) [16]
как хочешь, так и понимай.
форма есть объект класса TForm или его наследника.
время жизни объекта отсчитывается от времени успешного вызова конструирующего метода класса
конструирующий метод класа вызывается не иначе как в run-time или design-time
design-time по сути не отличается от run-time
← →
Digitman © (2005-02-08 15:06) [19]
> Алхимик © (08.02.05 14:56) [17]
> Наверно имеется ввиду AutoCreate?
и где написано, что действия Визарда в этом случае имеют отношения к некоей "статике" ?
← →
msguns © (2005-02-08 17:10) [20]>Алхимик © (08.02.05 14:56) [17]
>Наверно имеется ввиду AutoCreate?
Да.
>Digitman © (08.02.05 15:06) [19]
>и где написано, что действия Визарда в этом случае имеют отношения к некоей "статике" ?
Этот "термин" я подсмотрел у Мастеров этого же форума. Мне кажется, что он подходит как антипод "динамическому", когда речь идет о технологии создания объектов: во время конструирования (автоматически создаваемых при запуске приложения и затем разрушаемых только по завершению приложения) или во время выполнения (создание формы по соотв.событию и уничтожение ее по закрытию).
Т.е. можно сказать и так:
"Статическим" объектом условно называются объекты, создаваемые один раз (как правило при запуске программы) и существующие все время, пока выполняется приложение
"Динамическим" объектом условно называются объекты, создаваемые и уничтожаемые по мере необходимости.
Т.е.статическая форма существует в единственном экземпляре все время с момента запуска приложения до момента его завершения, в то время как динамическая форма может создаваться и уничтожаться произвольное кол-во раз и существовать в произвольном кол-ве экземпляров.
← →
msguns © (2005-02-08 17:17) [21]Разница в этих двух условных типах объектов есть, и весьма существенная и выражается в том, что при использовании "динамической" модели объекта в коде нельзя обращаться к свойствам и методам экземпляра объекта, а лишь к свойствам и методам класса, в то время как при "статической" модели можно.
А при выполнении, действительно, разницы никакой нет.
← →
begin...end © (2005-02-08 18:08) [22]> msguns © (08.02.05 17:17) [21]
> при использовании "динамической" модели объекта в коде
> нельзя обращаться к свойствам и методам экземпляра
> объекта, а лишь к свойствам и методам класса
То есть, ДО создания объекта? Ну так это и понятно - объект-то ещё не создан.
← →
Defunct © (2005-02-08 18:11) [23]> MacroDenS © (04.02.05 15:41) [11]
>> to Ошибка. Причем концептуальная ;)
> знаю, но работать то будет?
Не будет.
Вчитайтейсь в то что вы там намутили:
Procedure form1.Button1Click(sender: TObject);
begin
lbl:=Tlabel.Create(self);
lbl.parent:=Form1;
← →
SergP. (2005-02-08 20:40) [24]
> Defunct © (08.02.05 18:11) [23]
> > MacroDenS © (04.02.05 15:41) [11]
> >> to Ошибка. Причем концептуальная ;)
> > знаю, но работать то будет?
>
> Не будет.
>
Но все же работает... :-)))
← →
Юрий Зотов © (2005-02-08 21:13) [25]> NightStranger
Зайдите по ссылке [4], внимательно прочтите статью - и все вопросы исчезнут навсегда.
← →
Fay © (2005-02-09 03:51) [26]SergP. (08.02.05 20:40) [24]
Если некий экземпляр TForm1 хочет присвоить себя в качестве Parent (да хоть жуярент) какому-либо контролу, то надо писать не Form1, а Self, т.к. Form1 - просто некоторая переменная (возможно, пожходяшего типа) имеющая некоторое (в общем случае - произвольное) значение.
Вы всё ещё кипятите?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.041 c