Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Как создать кнопку   Найти похожие ветки 

 
muhan ©   (2005-03-04 19:43) [0]

Как создать кнопку нажатием на др. кнопку?
не сделать видимой, а именно создать...
не могу найти (


 
Anatoly Podgoretsky ©   (2005-03-04 19:51) [1]

Практически все объекты создаются с помощью конструктора Create.
Странно ты как то искал, очень трудно не найти.


 
muhan ©   (2005-03-04 19:52) [2]

подскажите плиз часть кода..все как долджно быть...


 
muhan ©   (2005-03-04 19:54) [3]

то есть что надо прописать в процедуре клика на кнопку


 
чяйник   (2005-03-04 19:56) [4]

var
b2: TButton;
begin
b2:=tbutton.create(self);
b2.parent:=self;

как-то так наверно


 
TUser ©   (2005-03-04 20:00) [5]

лучше Create(Application), но это от задача зивисит


 
muhan ©   (2005-03-04 20:01) [6]

а по конкретнее со вторым вариантом


 
muhan ©   (2005-03-04 20:02) [7]

задача проста....надо создать кнопку..


 
begin...end ©   (2005-03-04 20:04) [8]

> чяйник   (04.03.05 19:56) [4]

Так как нужно было только создать, то достаточно строки b2:=tbutton.create(self).

Если этот код будет выполняться в обработчике уже существующей первой кнопки, то замечу, что если при создании не указать владельца (Create(NIL)), то b2 не следует объявлять как локальную переменную.


 
TUser ©   (2005-03-04 20:07) [9]


> begin...end ©

Если ты готов ее создать и держать до самого конца работы приложения, то можно ее вообще никакой переменной не делать ...


 
begin...end ©   (2005-03-04 20:11) [10]

> TUser ©   (04.03.05 20:07) [9]

А обращаться к ней как (в случае, если не указать владельца и родителя)?


 
Anatoly Podgoretsky ©   (2005-03-04 20:14) [11]

begin...end ©   (04.03.05 20:11) [10]
А про это не было вопроса, только создать и даже было подчеркнуто, что ничего более.


 
чяйник   (2005-03-04 20:15) [12]


> TUser ©   (04.03.05 20:07) [9]

как это, не делать переменной? непонятно..


 
TUser ©   (2005-03-04 20:19) [13]


> А обращаться к ней как (в случае, если не указать владельца
> и родителя)?

> как это, не делать переменной? непонятно..

Меня тут самого мастера мордой в очевидной ткнули
with TButton.Create(Application) do begin
// назначаем свойства
end;
Обращаться - не всегда это нужно. Если нужно - то надо сделать переменную. Хотя можно и по-другому как-нибудь извратиться ...


 
Василий   (2005-03-04 20:32) [14]


> with TButton.Create(Application) do begin

Конгениально! (с)


 
Набережных С. ©   (2005-03-04 21:03) [15]


> TUser ©   (04.03.05 20:19) [13]

Например, она будет присутствовать в разных интересных списках владельца и родителя:)


 
TUser ©   (2005-03-04 21:11) [16]


> Набережных С. ©  

Ну я и имел в виде что-то типа этого.

ЗЫ. Ткнули, собственно говря, вы.


 
Nes ©   (2005-03-04 21:13) [17]

Блин начили тут мудрить, человеку нужно наиболее простой способ создать обычную кнопку...
  >muhan
Ты хоть понял как это сделать=)?


 
HSolo ©   (2005-03-05 08:48) [18]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=342


 
Defunct ©   (2005-03-05 09:09) [19]

imho, как для экспериментов [4] больше подходит, как для кода "навсегда" - [13]. тока все же не стоит делать Create( Application ), чревато утечками.


 
DesWind ©   (2005-03-05 09:54) [20]


> with TButton.Create(Application) do begin

А почему Application? При этом какие-то определенные особенности возникают?


 
Defunct ©   (2005-03-05 22:57) [21]

DesWind ©   (05.03.05 09:54) [20]

Да, например,

with TButton.Create( Application) do
begin
...
    Parent := FormX;

..
..

FormX.free;  

И экземпляр TButton остался висеть в памяти, в то время как отображаться ему уже негде


 
Leeechhhh   (2005-03-05 23:31) [22]

на сайте девелопмент и делфи была такая статья


 
Anatoly Podgoretsky ©   (2005-03-06 00:02) [23]

Defunct ©   (05.03.05 22:57) [21]
Вроде если есть Parent то он уничтожит и свои контролы.
Утечки будут при моногократном создании, да и то утечками это тоже сложно назвать, поскольку это не утечки, а время существования до времени существования объекта Application, то есть до конца жизни программы, потом они будут как положено уничтожены. По этой причине у меня Application владеет только главной формой, остальные имеют владельцем объект, в котором они создаются и при этом они все равно уничтожаются сразу же как только пропадает в них необходимость.


 
Defunct ©   (2005-03-06 01:33) [24]

> Вроде если есть Parent то он уничтожит и свои контролы.

точно. В таком случае получается нет разницы, что мы пишем в Create?


 
Defunct ©   (2005-03-06 01:38) [25]

[24]

Разумеется если не предвидится поиск созданной кнопки по FindComponent


 
Василий   (2005-03-06 21:37) [26]

В хелпе не сказано, что уничтожением объекта занимается его Parent. Это делает Owner, а Parent только отображает.

The Parent of a control is always a windowed control that visually contains the control. The Owner of a component is the component that was passed as a parameter in the constructor and that controls when the component is freed.


 
Defunct ©   (2005-03-06 21:51) [27]

> В хелпе не сказано, что уничтожением объекта занимается его Parent. Это делает Owner, а Parent только отображает.

че-то Вы в трех соснах заблудились. Если Parent назначен, то он уничтожит свои child контролы, если нет - тогда это сделает Owner.


 
Василий   (2005-03-06 22:06) [28]


> Defunct ©   (06.03.05 21:51) [27]

Спасибо, что разъяснили. Из хелпа это вроде как не следует, но действительно, оказалось что Parent уничтожает своих Childов.


 
Gero ©   (2005-03-06 22:06) [29]


> Если Parent назначен, то он уничтожит свои child контролы,
> если нет - тогда это сделает Owner.

А не ты ли в трех соснах заблудился случайно?


 
чяйник   (2005-03-06 22:09) [30]

Я проверял следующим образом:
 ButtonN := TButton.Create(Self);
 ButtonN.Parent := GroupBox1;
 GroupBox1.Free;
 ButtonN.Parent := Self;
Вылетает с AV.


 
Defunct ©   (2005-03-06 22:10) [31]

Gero ©   (06.03.05 22:06) [29]
> А не ты ли в трех соснах заблудился случайно?

Определенно - нет. Проверено.


 
Gero ©   (2005-03-06 22:12) [32]


> Defunct ©   (06.03.05 22:10)

Да, действительно, ты прав.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.048 c
4-1107380991
DeadMeat
2005-02-03 00:49
2005.03.20
Защита папки


1-1109774205
Anatoliy T.
2005-03-02 17:36
2005.03.20
Установлен ли Word


14-1109196159
Случайно забредший
2005-02-24 01:02
2005.03.20
Где там галочку поставить, чтоб ехешник работал без Дельфи?


1-1110230253
Ермак
2005-03-08 00:17
2005.03.20
Отловить перемещение окна


1-1110366176
Goga
2005-03-09 14:02
2005.03.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский