![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| CynicRus |
|
||||||||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 248 Регистрация: 31.5.2012 Репутация: нет Всего: 5 |
Ещё раз приветствую уважаемых форумчан. Пишу дизайнер форм для одного скриптового языка, соответственно случилась необходимость прикрутить к этому делу небольшой редактор контролов. Я пошел следующим путем:
1) Завел структуру TSimbaComponent, описывающую компонент существующий в скриптовом языке:
2) Написал класс-обертку для TList Для удобной работы с моей структурой:
3) Написал процедуру, забирающую у контрола необходимые свойства и присваивающую их структуре:
4) На главной форме разместил стринггрид, и заполняю его:
5) Форма 2 создается в рантайме, и располагается на панели формы 1. После выбора контрола на первой форме, он располагается на форме 2, его свойства пишуться в структуру, затем структура отображается в гриде. Но только если выбран контрол, при простом клике на форму - я ловлю категорический сегфолт и уже весь мозг сломал, как же мне это вылечить. В отладчике смотрел - как я понимаю, косяк со свойством контрола Tag. Но как мне быть - придумать пока не могу-( Код создания контрола
Если убрать последние 3 строчки, то работает восхитительно. Если при клике на форму - выбран контрол для создание - то и с 3 последними строчками, все пашет замечательно. Так вот собственно вопрос - как избежать сегфолтов при клике на пустую форму, а при клике на существующий на форме 2 контрол - запихнуть в грид уже существующую информацию о нем из обертки? PS: сегфолт ловлю на строке
|
||||||||||||||
|
|||||||||||||||
| DarkProg |
|
||||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 2 Всего: 19 |
Сначала родительский конструктор, потом всё что хотите своё, т.е. сначала inherited, а потом всё остальное. Для вот этого
Можно использовать класс TFont, отлично работает. Кстати зачем вы вообще используете TList, если у вас вполне определённый тип объектов? Создайте массивчик динамический и храните всё там, функциональчик получится несколько меньше, но работать будет. TList сам вполне умеет добавлять и удалять элементы, GetMem вам тоже делать не надо, там внутри только указатели будут. Ваша же задача написать обёрточку что положить и что извлечь(просто сделать приведение типов). Собственно вот отличный пример работы с TList http://delphibasics.ru/TList.php -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
||||
|
|||||
| CynicRus |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 248 Регистрация: 31.5.2012 Репутация: нет Всего: 5 |
Спасибо за конструктивную критику-)
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |