|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.01.2008, 20:06 | #1 |
Форумчанин
Регистрация: 12.12.2007
Сообщений: 121
|
динамическое создание компонентов
Начал я с TButton'ов....
Код:
Компьютеры - вещь слишком сложная, чтобы работать в принципе. Поэтому то, что они работают хоть как-то, уже чудо.
|
03.01.2008, 20:15 | #2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Самый простой и незатейливый вариант (чтобы не переутруждаться):
1. Кидаем на форму TButton; 2. Двойным кликом по нему создаем контейнер для обработчика; 3. В контейнере прописываем нужный код, обращая внимание на (Sender as TButton)... 4. Прописываем для создаваемых динамически кнопок: btn[i].OnClick:=здесь указываем наш обработчик для TButton; 5. Удаляем ненужный теперь уже TButton. Да, кстати, для создаваемых кнопок неплохо бы указывать еще и имя, например btn[i].Name:='MyBtn'+IntToStr(i); |
03.01.2008, 21:23 | #3 |
Форумчанин
Регистрация: 12.12.2007
Сообщений: 121
|
Спасибо огромное)
вот переделанный код: Код:
Компьютеры - вещь слишком сложная, чтобы работать в принципе. Поэтому то, что они работают хоть как-то, уже чудо.
Последний раз редактировалось artemavd; 17.10.2010 в 11:20. |
03.01.2008, 21:55 | #4 | ||
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Цитата:
Я же обращал ваше внимание на этот момент: Цитата:
if (Sender as TButton).Name='MyButton1' then .... else if (Sender as TButton).Name='MyButton2' then .... Или используйте CASE (Sender as TButton).Name OF... |
||
04.01.2008, 02:09 | #5 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
Для идентификации удобно использовать свойство Tag, например: btn[i].Tag:=i;
А проверять if TButton(Sender).Tag = 1 then ... Или через case TButton(Sender).Tag of (для текстов case не подойдет). Тогда и имя компоненту не понадобится. |
04.01.2008, 22:40 | #6 |
Пользователь
Регистрация: 25.11.2006
Сообщений: 86
|
А как в процессе работы программы удалить динамически созданный компонент (для примера хоть ту же кнопку)?
Мой ник - GN
|
04.01.2008, 23:28 | #7 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
btn[i].Free; Это если нужно удалить самому.
Но можно оставить и на "автомате", ведь при создании - btn[i]:=TButton.Create(form1); - в качестве владельца указывалась форма Form1 и когда она будет уничтожаться, она уничтожит и все принадлежащие ей объекты. |
05.01.2008, 09:59 | #8 |
Пользователь
Регистрация: 25.11.2006
Сообщений: 86
|
Большое спасибо.
Мой ник - GN
|
17.10.2010, 09:34 | #9 |
Старожил
Регистрация: 05.06.2008
Сообщений: 4,206
|
Я вот пробую создать динамически компонент Image и загрузить в него картинку сразу, но выдается ошибка, что "Cannot open file "С:\file.bmp". Не удается найти указанный файл". Хотя если без загрузки, то компонент создается. Картинку и хочу в него загрузить, чтобы проверить это. Вот код:
Код:
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
|
17.10.2010, 13:52 | #10 |
Баламучу слегка...
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,585
|
Видимо все-таки что-то не так с путем, т.к. код абсолютно работоспособный.
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамическое создание объекта | ANGa | Помощь студентам | 3 | 10.04.2008 18:14 |
динамическое содзание компонентов и процедур обработки | Prisian | Компоненты Delphi | 5 | 11.12.2007 21:17 |
Динамическое создание фрейма | s-force | Общие вопросы Delphi | 9 | 05.09.2007 16:56 |
Динамическое создание объектов | LepihinMS | Общие вопросы Delphi | 18 | 05.07.2007 23:31 |
Как динамически добавить Мемо на форму? Динамическое создание компонентов! | werser | Помощь студентам | 1 | 14.06.2007 00:39 |