| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Использование 2 форм и сегфолт |
| Автор: CynicRus 10.7.2012, 20:04 | ||||||||||||||
| Ещё раз приветствую уважаемых форумчан. Пишу дизайнер форм для одного скриптового языка, соответственно случилась необходимость прикрутить к этому делу небольшой редактор контролов. Я пошел следующим путем: 1) Завел структуру TSimbaComponent, описывающую компонент существующий в скриптовом языке:
2) Написал класс-обертку для TList Для удобной работы с моей структурой:
3) Написал процедуру, забирающую у контрола необходимые свойства и присваивающую их структуре:
4) На главной форме разместил стринггрид, и заполняю его:
5) Форма 2 создается в рантайме, и располагается на панели формы 1. После выбора контрола на первой форме, он располагается на форме 2, его свойства пишуться в структуру, затем структура отображается в гриде. Но только если выбран контрол, при простом клике на форму - я ловлю категорический сегфолт и уже весь мозг сломал, как же мне это вылечить. В отладчике смотрел - как я понимаю, косяк со свойством контрола Tag. Но как мне быть - придумать пока не могу-( Код создания контрола
Если убрать последние 3 строчки, то работает восхитительно. Если при клике на форму - выбран контрол для создание - то и с 3 последними строчками, все пашет замечательно. Так вот собственно вопрос - как избежать сегфолтов при клике на пустую форму, а при клике на существующий на форме 2 контрол - запихнуть в грид уже существующую информацию о нем из обертки? PS: сегфолт ловлю на строке
|
| Автор: DarkProg 10.7.2012, 23:12 | ||||
Сначала родительский конструктор, потом всё что хотите своё, т.е. сначала inherited, а потом всё остальное. Для вот этого
Можно использовать класс TFont, отлично работает. Кстати зачем вы вообще используете TList, если у вас вполне определённый тип объектов? Создайте массивчик динамический и храните всё там, функциональчик получится несколько меньше, но работать будет. TList сам вполне умеет добавлять и удалять элементы, GetMem вам тоже делать не надо, там внутри только указатели будут. Ваша же задача написать обёрточку что положить и что извлечь(просто сделать приведение типов). Собственно вот отличный пример работы с TList http://delphibasics.ru/TList.php |
| Автор: CynicRus 11.7.2012, 08:42 |
| Спасибо за конструктивную критику-) |