![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 12.12.2007
Сообщений: 121
|
![]()
Начал я с TButton'ов....
Код:
Компьютеры - вещь слишком сложная, чтобы работать в принципе. Поэтому то, что они работают хоть как-то, уже чудо.
|
![]() |
![]() |
![]() |
#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); |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 12.12.2007
Сообщений: 121
|
![]()
Спасибо огромное)
вот переделанный код: Код:
Компьютеры - вещь слишком сложная, чтобы работать в принципе. Поэтому то, что они работают хоть как-то, уже чудо.
Последний раз редактировалось artemavd; 17.10.2010 в 11:20. |
![]() |
![]() |
![]() |
#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... |
||
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
![]()
Для идентификации удобно использовать свойство Tag, например: btn[i].Tag:=i;
А проверять if TButton(Sender).Tag = 1 then ... Или через case TButton(Sender).Tag of (для текстов case не подойдет). Тогда и имя компоненту не понадобится. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 25.11.2006
Сообщений: 86
|
![]()
А как в процессе работы программы удалить динамически созданный компонент (для примера хоть ту же кнопку)?
Мой ник - GN
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
![]()
btn[i].Free; Это если нужно удалить самому.
Но можно оставить и на "автомате", ведь при создании - btn[i]:=TButton.Create(form1); - в качестве владельца указывалась форма Form1 и когда она будет уничтожаться, она уничтожит и все принадлежащие ей объекты. |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 25.11.2006
Сообщений: 86
|
![]()
Большое спасибо.
Мой ник - GN
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 05.06.2008
Сообщений: 4,206
|
![]()
Я вот пробую создать динамически компонент Image и загрузить в него картинку сразу, но выдается ошибка, что "Cannot open file "С:\file.bmp". Не удается найти указанный файл". Хотя если без загрузки, то компонент создается. Картинку и хочу в него загрузить, чтобы проверить это. Вот код:
Код:
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
|
![]() |
![]() |
![]() |
#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 |