Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2019, 14:35   #1
dsbv
Пользователь
 
Регистрация: 21.03.2019
Сообщений: 20
По умолчанию Програмно создаваемые кнопки

Возникла необходимость в ходе работы проги создавать новые кнопки и удалять ненужные. Как такое можно реализовать? Может как то вставлять кнопки в ячейки например в StrngGrid? Или при клике по ячейке как то сделать, чтоб было похоже на нажатие обычной кнопки?
Вся проблема в том, что прога управляется сенсорным монитором, по которому тыкают пальцами (нет не мышки ни клавы). Потому создание динамических выпадающих списков не использую (мелковато для пальцев) и прокрутку экрана пальцами делать не удобно.
Что можете посоветовать.
dsbv вне форума Ответить с цитированием
Старый 28.03.2019, 15:33   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от dsbv Посмотреть сообщение
Возникла необходимость в ходе работы проги создавать новые кнопки и удалять ненужные. Как такое можно реализовать?
Думаю, можно здесь прочитать: http://www.delphi-manual.ru/dynamica...components.php
Вадим Мошев вне форума Ответить с цитированием
Старый 28.03.2019, 15:51   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от dsbv Посмотреть сообщение
Возникла необходимость в ходе работы проги создавать новые кнопки
простите, а в чём проблема создавать динамически кнопки?

я, если честно, только одну проблему вижу - в их размерах и корректном размещении на экране.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.03.2019, 09:43   #4
dsbv
Пользователь
 
Регистрация: 21.03.2019
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
простите, а в чём проблема создавать динамически кнопки?

я, если честно, только одну проблему вижу - в их размерах и корректном размещении на экране.
Вот в этом и проблема(в размещении), экран маленький, кнопок много, прокрутка пальцем не удобна
Как представлю сколько писанины и считалок координат, так тошно становится. Думал просто вставлять кнопки например в ListView, опять думаю еще ворох проблем поднимется при перерисовке и изменении размеров, кнопки вылезут за границы колонок (((((
Самое простое, до чего додумался заместо кнопок использовать ячейки тогоже ListView. Думал может у кого есть идея еще проще

Последний раз редактировалось dsbv; 29.03.2019 в 09:55.
dsbv вне форума Ответить с цитированием
Старый 29.03.2019, 09:55   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

простите, я не понял, что Вас интересует.

Цитата:
Сообщение от dsbv Посмотреть сообщение
Возникла необходимость в ходе работы проги создавать новые кнопки и удалять ненужные. Как такое можно реализовать?
Как создавать/удалять кнопки
или

Цитата:
Сообщение от dsbv Посмотреть сообщение
экран маленький, кнопок много
что делать, если экран маленький, а кнопок много?

Если второй вопрос - то какого рода помощь Вы ожидаете? Совет сделать экран больше? или совет организовывать вложенные меню (как это сделано в меню банкомата)?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.03.2019, 09:58   #6
dsbv
Пользователь
 
Регистрация: 21.03.2019
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение

Если второй вопрос - то какого рода помощь Вы ожидаете? Совет сделать экран больше? или совет организовывать вложенные меню (как это сделано в меню банкомата)?
Думал может поскажете какие есть готовые сторонние компоненты, типа таблиц с кнопками
dsbv вне форума Ответить с цитированием
Старый 29.03.2019, 10:57   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от dsbv Посмотреть сообщение
Думал может поскажете какие есть готовые сторонние компоненты, типа таблиц с кнопками
которые увеличат ваш экран?

поймите, что чуда не может быть:
либо кнопок мало и они все помещаются на экран
либо кнопок много и все кнопки не помещаются на экран, тогда возникает необходимость скроллить
либо кнопок много, эти все кнопки помещаются на экран, но размер кнопок маленький.

p.s. чем таблица с кнопками лучше, чем просто кнопки на экране?
exampl_bt.png
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.03.2019, 11:01   #8
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,550
По умолчанию

Как по мне - нормальное решение ListBox. И считать ничего не надо.

Код:
procedure TForm1.ListBox1Click(Sender: TObject);
var ii : integer ;
begin
   ii := ListBox1.ItemIndex ; 
   ......................................
end;
А массив кнопок - тоже не беда. В цикле. Определить размер одной кнопки, а дальше цикл сам посчитает. В Swipper'е ведь сделали
Изображения
Тип файла: jpg blahamuha.JPG (22.7 Кб, 89 просмотров)

Последний раз редактировалось digitalis; 29.03.2019 в 11:20.
digitalis вне форума Ответить с цитированием
Старый 29.03.2019, 14:43   #9
dsbv
Пользователь
 
Регистрация: 21.03.2019
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
p.s. чем таблица с кнопками лучше, чем просто кнопки на экране?
Вложение 96241
Наверное я не очень понятно объяснил суть задачи.
Вот например в проге кнопки как Вашей таблице, допустим мне надо удалить кнопку ВТ28. Удаляем кнопку, но пустоту надо заполнить другой кнопкой...начинаем координаты высчитывать и прочее.
А если представить, что одна вертикальная колонка кнопок-это одна таблица(состоящая из одного столбца). Просто удаляем строку содержащую кнопку ВТ28. Так не проще разве?
dsbv вне форума Ответить с цитированием
Старый 29.03.2019, 14:53   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от dsbv Посмотреть сообщение
Просто удаляем строку содержащую кнопку ВТ28. Так не проще разве?
проще.


Цитата:
Сообщение от dsbv Посмотреть сообщение
допустим мне надо удалить кнопку ВТ28. Удаляем кнопку, но пустоту надо заполнить другой кнопкой...начинаем координаты высчитывать и прочее.
А поясните, в чём проблема написать код, который в цикле пересчитывает координаты кнопок?
Там вроде бы простая арифметика. Нет?

p.s. была на форуме тема про кнопки в гриде.
см. http://www.programmersforum.ru/showthread.php?t=23986

добавлено
кстати, по поводу лёгкости и простоты удаления строчки из грида.
А Вы пробовали удалять строчку из StringGrid'а?
простого текстового грида, без всяких кнопок и заморочек с координатами.
попробуйте. Это познавательно и интересно.
Просто киньте на форму грид, заполните его последовательно целыми числами и потом напишите на onClick кнопки код, который удаляет одну строчку.
например, для простоты, при каждом нажатии удаляйте первую строчку из грида.

Последний раз редактировалось Serge_Bliznykov; 29.03.2019 в 15:17.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание програмно кнопки (Button) с кодом Chikoy Общие вопросы Delphi 5 18.12.2012 19:48
Как програмно снять выделение с кнопки misher Общие вопросы Delphi 8 26.02.2011 16:46
Нажатие кнопки в игре програмно? KoSMoS Общие вопросы Delphi 4 27.07.2009 19:39
как называются кнопки(програмно)? blackstersl Общие вопросы Delphi 5 03.05.2009 16:40
Как програмно создавать кнопки лэйблы и другие элементы Zaher Помощь студентам 2 13.05.2008 08:59