|
Вопрос # 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]:
Буду рад взглянуть
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|