Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1107787925
hgd
2005-02-07 17:52
2005.02.20
Генерация html страниц


3-1105871854
cherrex
2005-01-16 13:37
2005.02.20
DBGRID и Excel


3-1106116686
MakNik
2005-01-19 09:38
2005.02.20
найти всех детей узла дерева


6-1102537369
Homa_Programer
2004-12-08 23:22
2005.02.20
выключение компа


14-1107252254
infom
2005-02-01 13:04
2005.02.20
Выскажите своё мнение или поделитесь опытом ... Ханты-Мансийск





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский