Главная страница
    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.51 MB
Время: 0.033 c
3-1108630061
cherrex
2005-02-17 11:47
2005.03.20
Создание БД из приложения


1-1110222402
ser35
2005-03-07 22:06
2005.03.20
Как отобразить текст?


3-1108727470
Kat
2005-02-18 14:51
2005.03.20
Как узнать работает ли кто с БД


14-1109325132
Cosinus
2005-02-25 12:52
2005.03.20
У Подгорецкого на сайте была статья по работе с битами.


4-1107427381
Zilog
2005-02-03 13:43
2005.03.20
Delphi + USB= ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский