![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
![]()
Как выяснилось, в embarcadero после D7 изменена структура классов в стандартных объектов
в частности, проблема коснулась класса TBitBtn: было TCustomButton->TButton->TBitBtn, теперь TBitBtn напрямую наследуется от TCustomButton В одном из проектов у меня процедуры на вход принимает кнопки произвольного типа, и «Sender as TButton» и тому подобное по всему коду размазано. Получается, ошибки выпадают только в рантайме, к тому же иногда точно не известно, какого типа придёт Sender в процедуру, Button или TButton, приходится вбивать кучу ветвлений, в общем, местами в ступоре, что делать. Приводить к TCustomButton нельзя - нет нужных полей. Структуру классов от версии к версии поменять – жесть какая-то. Кто-нибудь сталкивался с этими проблемами? Быть может, где-то написаны какие-нибудь интересные пути решения, ну или просто хотелось бы знать, каких ещё проблем такого рода ожидать. |
![]() |
![]() |
![]() |
#2 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
![]()
Чем проще сделан GUI, тем меньше проблем - привычка, выработанная годами.
Как вариант - заменить в прожэкте все TBitBtn на TButton. Если это возможно, конечно. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
![]()
Проще низзя - программа пишется для удобства юзеров прежде всего! Да собс-но всё работало, даже при спонтанно-кривой реализации MVC
Цитата:
вообще, по-моему, глупость в принципе делать кнопку с иконкой как отдельный объект, свойство "Glyph" должно быть у любой кнопки! В упор не понимаю, зачем TButton был выделен как отдельный класс, во всех книгах и примерах упоминают именно его, и главное - на панели инструментов он просто в глаза бросается. В результате - на десятках форм прожекта расположены кнопы TButton и TBitBtn вперемешку. Вполне естесственно, что были написаны "обобщающие" функции, которые разместились в десятках процедур, и вот тут на тебе такая засада: вместо того, чтобы приравнять TButton и TBitBtn - их разделили в разные ветки иерархии классов! идиотизм какой-то, другого слова не подберу |
|
![]() |
![]() |
![]() |
#4 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
![]() Цитата:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 09.11.2007
Сообщений: 1,762
|
![]() |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Потому что BitBtn уже совсем другая кнопка а не кнопка с прибабахом. Потому от CustomButton и унаследовано.
Переписывайте свой код под новый класс. |
![]() |
![]() |
![]() |
#7 | |
Форумчанин
Регистрация: 25.09.2008
Сообщений: 209
|
![]() Цитата:
Я всегда воспринимал TBitBtn как вполне логичное развитие TButton - добавление иконки и (возможно) иного функционала, и я сетовал лишь на то, что для кнопки с иконкой придумано новое имя, а не расширен функционал TButton. А тут на тебе. Оказалось, что TButton - весь такой особенный и теперь родительским классом не будет! под который из двух? ![]() У меня похоже единственный выход - поставить какой-нибудь эксперт, который автоматом заменит TButton на всех формах ВО ВСЕХ ПРОЕКТАХ на TBitBtn, потом поиск по текстам всех модулей (общих для многих проектов) и везде заменить упоминание TButton на TBitBtn и забыть про TButton, как про страшный сон Правда, он ещё долго будет продолжать преследовать разработчика на главной панели инструментов - "Standart", неведомо зачем Последний раз редактировалось AnTe; 25.09.2014 в 15:13. |
|
![]() |
![]() |
![]() |
#8 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
![]() Цитата:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
![]() |
![]() |
![]() |
#9 | ||
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]() Цитата:
Цитата:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
||
![]() |
![]() |
![]() |
#10 | ||
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
![]() Цитата:
![]() Про notepad++ не спорю, есть там такая примочка. Просто на момент написания, как ты говоришь, велосипеда, у меня не было интернета, чтоб что-то найти и скачать. Цитата:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
TSpeedButton TBitBtn PNG Alpha прозрачность. | alextrof94 | Общие вопросы Delphi | 1 | 29.04.2013 18:58 |
Изменение символа компонента TBitBtn | anka_masurowa | Компоненты Delphi | 8 | 12.04.2012 08:35 |
unable to rename 'C:\ProgramFiles\Borland\Delphi7\Bi n\Delphi32.$$$' to 'C:\Program Files\Borland\Delphi7\ | KazBoy | Помощь студентам | 1 | 12.04.2011 18:07 |
TStringGrid и TBitBtn.OnClick | megachuhancer | Общие вопросы Delphi | 0 | 16.06.2010 08:25 |