Форум: "Основная";
Текущий архив: 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