| 
| 
 | Вопрос # 4 764/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты! Объясните мне разницу межу доюавлением не форму компоненты и его создания динамически? 
|  |   Вопрос задал: eclipse (статус: Посетитель)Вопрос отправлен: 26 ноября 2010, 18:56
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 10; последнее сообщение — 1 декабря 2010, 12:34; участников в обсуждении: 5. 
|   | min@y™ (статус: Доктор наук), 27 ноября 2010, 08:25 [#1]:Динамическое создание компонента надо писать руками. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | eclipse (статус: Посетитель), 27 ноября 2010, 09:14 [#2]:min@y™ , а разницы получается никакой нет? |  
|   | min@y™ (статус: Доктор наук), 27 ноября 2010, 10:59 [#3]:Разницу я написал в предыдущем посте. Плюс свойства компонента, созданного в дизайне, сохраняются в DFM-файле и включаются в ресурс приложения.
 
 Откуда ваще такой вопрос?
 
 З.Ы. Советую читать свои сообщения перед нажатием кнопки "отправить" и проводить работу над ошибками.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | eclipse (статус: Посетитель), 27 ноября 2010, 11:06 [#4]:А вопро я задал такой потому, что если создавать динамически, допустим Button, тогда, если их будет несколько, то все действия onClick присвоятся только последнее действите, т.е. создадутся например 3 кнопки... но при нажатии на любую из них будет выполняться одно и то же действие. В таком случае придётся писать функцию для создания динамических кнопок с разными названиями... так? тогда нахрена они вообще нужны, динамически? если их проще сделать вручную и накидать то, что надо. |  
|   | Alexxx (статус: Посетитель), 27 ноября 2010, 18:35 [#5]:У каждого компонента в конструкторе присутствует параметр владелец компонента AOwner:TObjectнапример TComponent.Create(AOwner: TObject). Когда ты кидаешь в визуальном дизайнере кнопку на форму, у кнопки автоматически владельцем становится форма. При создании динамически ты сам обязан указать владельца например
 
 var
  Button1: TButton;
begin
  Button1 := TButton.Create(Form1);При уничтожении владельца, сначала уничтожаются все компоненты владельцем которых он является, а потом он сам. Т.е. например ответственность за уничтожение кнопки ложится на "плечи" его владельца - формы. Например для невизуальных компонентов можно указать в качестве владельца nil, но тогда вся ответственность за его уничтожение ложиться на "плечи" программиста, т.е
 
 var
  xlr: TXlReport;
begin
  xlr := TXlReport.Create(nil);
  //что-то делаем
  xlr.Free;
end; |  
|   | min@y™ (статус: Доктор наук), 27 ноября 2010, 20:56 [#6]:Причём тут названия кнопок? Обработчик OnClick можно повесить один на все и различать их по свойству Tag. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | eclipse (статус: Посетитель), 28 ноября 2010, 00:13 [#7]:О! min@y™ ... вот примерно до этого я и хотел добраться... А что это за свойство? и как примерно его использовать? |  
|   | Вадим К (статус: Академик), 28 ноября 2010, 00:46 [#8]:если перевести дословно с английского, то это "ярлык". Это просто такое свойсво, где можно сохранять для себя целое число (можно и указатель, если нужно). Сама делфи никак не проверяет это свойство и никаких предположений не делает на его счет. А потом использовать, менять.
 Таким образом, можно создать сотню кнопок, каждой присвоить в свойстве tag порядковый номер и всем дать один метод "OnClick". И в этом методе можно будет различать кнопки по их TButton(Sender).Tag
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Инегелд (статус: Посетитель), 30 ноября 2010, 11:02 [#9]:Если вопрос еще актуален, могу скинуть исходник игры в пятнашки, где активно используется динамическое создание элементов и обратотка событий в зависимости от их координат. |  
|   | eclipse (статус: Посетитель), 1 декабря 2010, 12:34 [#10]:Буду рад взглянуть |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |