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

Вниз

Создание элемента "из воздуха"   Найти похожие ветки 

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

Наверх




Память: 0.53 MB
Время: 0.04 c
1-1107379949
suharew
2005-02-03 00:32
2005.02.20
Как писать в файл занятый другим приложением.


14-1106901855
syte_ser78
2005-01-28 11:44
2005.02.20
Прозрачный фон


1-1107787925
hgd
2005-02-07 17:52
2005.02.20
Генерация html страниц


4-1103533130
Ma3aXaka
2004-12-20 11:58
2005.02.20
какие winapi использует виндовая утилита net file?


3-1106227003
Rule
2005-01-20 16:16
2005.02.20
Помогите создать тригер в информиксе