Динамический массив кнопок

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Tatiana
незнакомец
Сообщения: 4
Зарегистрирован: 27.09.2013 11:48:27

Динамический массив кнопок

Сообщение Tatiana »

Добрый день, не подскажите, как можно сделать динамический массив из кнопок..но такой, чтоб число столбцов было фиксированным, а число строк - динамическим... Просто мне нужно "программно" создать кнопки.
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

Объявить массив (наверно двухмерный) типа кнопки, добавляеш динамически нужное количество строк (первый уровень массива), по константе количество столбцов (второй уровень массива), далее задаёш размеры, "расставляеш" кнопки (я б предпочёл привязки), перед сокращением длины длины динмассива не забываеш уничтожать объекты кнопок. Ну и естественно всё это луче завернуть в отдельный класс (компонент).
Tatiana
незнакомец
Сообщения: 4
Зарегистрирован: 27.09.2013 11:48:27

Сообщение Tatiana »

Да, двумерный..Это делается так?
a: array of array [0..2] of TBitButton;

Добавлено спустя 2 минуты 1 секунду:
И про расставления кнопок...и где лучше прописывать код создания кнопок
Аватара пользователя
qivi
энтузиаст
Сообщения: 703
Зарегистрирован: 19.01.2009 12:45:54
Откуда: Россия

Сообщение qivi »

С предопределением второго уровня не задавал, но вроде да

Рекомендую вынести всё это в отдельный класс, наследуй TCustomControl, он и станет родителем для твоих кнопок. Для добавления создай метод "Add" с нужными параметрами, в этом методе и создавай кнопки. Привязки, да сделай демку, и скопируй из lfm'ки. Чтоб масштабировался компонент пропорционально переопределяй OnResize. Да в общем тут твоя фантазия, что надо то и лепи.
andrey_k3
новенький
Сообщения: 22
Зарегистрирован: 17.05.2012 09:52:32

Сообщение andrey_k3 »

Вот очень полезная статья про создание элементов в рантайме - здесь
Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Лучше пользоваться TList ...
Но вообще зачем мучится если можно просто накидать через insertComponent на форму любое количество любых динамически создаваемых кнопок и присвоить им общий обработчик кликов, в котором просто проверять подписи ?
Ответить