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

Вниз

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

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

Наверх




Память: 0.54 MB
Время: 0.051 c
14-1109835563
ISP
2005-03-03 10:39
2005.03.20
Наконец-то админы смогут спать спокойно :)


1-1109871255
Checist [root]
2005-03-03 20:34
2005.03.20
Нужен компонент TrayIcon


14-1109784182
Гарри Поттер
2005-03-02 20:23
2005.03.20
Газпром + Роснефть = ?


3-1108558796
DimonNew
2005-02-16 15:59
2005.03.20
DBGrid & ButtonStyle


9-1104069951
Brak
2004-12-26 17:05
2005.03.20
Сгдаживание точки в OpenGL