Страница 2 из 5
Re: Базовый шаблон для создания редактора, с поддержкой вкла
Добавлено: 10.08.2016 21:35:04
Deimos
тогда убираем вотэто за ненужностью
обоснуйте
Добавлено спустя 4 минуты 43 секунды:Re: Базовый шаблон для создания редактора, с поддержкой вкладокНе удержался )))
Можно работать с динамическими компонентами, без списка онных и указателя на конкретный? Просветите... Буду только рад
Re: Базовый шаблон для создания редактора, с поддержкой вкла
Добавлено: 10.08.2016 21:40:01
zub
1) Даже если в указателях тут есть какаято необходимость (невижу в упор) - в данной реализации они всеравно длагополучно утекают - надо доводить до ума
2) atab:ttabsheet; - atab тут уже указатель (так устроены классы). и конструкция вида atab: ^ttabsheet; это масло маслятое - указатель на указатель на инстанс
>>Можно работать с динамическими компонентами, без списка онных и указателя на конкретный? Просветите... Буду только рад
разрешаю, можно!))
Re: Базовый шаблон для создания редактора, с поддержкой вкла
Добавлено: 10.08.2016 21:45:22
Deimos
разрешаю, можно!
Зуб - без обид...
Срач с Айрином уже который день...
Много замечаний к моему - есть толковые.... Теоретические
Код давай. Поправь нас... Научимся - исправим..
Модераторам - закройте тему пожалуйста.
Re: Базовый шаблон для создания редактора, с поддержкой вкла
Добавлено: 10.08.2016 21:58:41
zub
>>Зуб - без обид..
Какие обиды)) Ты тоже сильно не напрягайся - твой код реально неправильный
>>Много замечаний к моему - есть толковый.... Теоретические
Обоснованые. Проверь утечки в своей программе. Научить как?
>>Код давай. Поправь нас... Научимся - исправим..
Не надо ждать от меня полного кода. динамическое создание таба должно выглядеть примерно так
Код: Выделить всё
procedure TmForm.create_tab(path,fext:string);
var
TEMPatab:ttabsheet;//просто класс, не указатель на класс
begin
mform.BeginFormUpdate;
//new(TEMPatab);//ненадо так
TEMPatab:=ttabsheet.Create(pages);
TEMPatab.PageControl:=pages;
TEMPatab.Parent:=pages;
TEMPatab.caption:=extractfilename(path);
statusbar1.Panels[0].Text:=extractfilepath(path)+extractfilename(path);
new(aedit);
aedit^:=tsedit.create(TEMPatab,path);
aedit^.Parent:=TEMPatab;
....
aedit - сам правь. дальнейшие вхождения тоже сам
кроме того, по мне необходимость aedit и atab в описании класса не обоснована (поэтому TEMPatab у меня стал локальной переменной). Если ты так не считаешь - дело твое и непринципиальное, тогда перекинь TEMPatab в класс
>>Модераторам - закройте тему пожалуйста.
Ишь какой. Выложил косячный пример и в кусты?))
Re: Базовый шаблон для создания редактора, с поддержкой вкла
Добавлено: 10.08.2016 23:22:56
скалогрыз
имхо,
zub намекает, что
1) вообще .lfm (или часть его) нужно держать как внешний ресусрный файл и подгружать по необходимости.
2) ещё было бы неплохо, цеплять скрипты динамически. При чём pascalscript, а какой-нить lua вешать, опционально
3) или вместо скриптовой реализации компилировать не лету в дин библиотеки.
(этакая альтернатива html+js)
конечно, потом все эти вещи можно будет погружать из сети. Но так или иначе RTTI это наше всё
ну или хотя бы - убрать всё лишнее из примера
Re: Базовый шаблон для создания редактора, с поддержкой вкла
Добавлено: 11.08.2016 08:18:39
Лекс Айрин
Deimos писал(а):Срач с Айрином уже который день...
Это не срач, пусть и выглядит так.
Re: Базовый шаблон для создания редактора, с поддержкой вкла
Добавлено: 11.08.2016 10:54:27
zub
Срач с Айрином уже который день...
Вы срачей не видели))
Критика это всегда хорошо. я был бы рад если по моей работе ктонить бы также пробежался
Re: Базовый шаблон для создания редактора, с поддержкой вкла
Добавлено: 11.08.2016 11:03:16
Deimos
zub писал(а):Критика это всегда хорошо
Абсолютно согласен. С утечками - мой косяк... Мне и самому далеко не весь код нравится ))) И мой, иногда, в том числе...
С указателями намудрил действительно-лишнего.
Убрал утечки )))
Потом прикинул и таки поменял на экшены...
Ну и код чуть причесал в паре процедур
Re: Базовый шаблон для создания редактора, с поддержкой вкла
Добавлено: 11.08.2016 23:35:16
zub
Красота. Но зачем тут указатели?
Сейчас еще меняем
на
трём все строки с
new и
disposeпоиском и заменой меняем везде
aedit^ и
atab^ на
aedit и
atab соответственно
Чудеса - всё работает без указателей - они не нужны для динамического создания классов
Можно работать с динамическими компонентами, без списка онных и указателя на конкретный? Просветите... Буду только рад
Можно и без списков и без указателей.
Списки уже заботливо есть внутри owner`ов, И если своему динамически созданому контролу назначить owner`а - указатель на него сохранится в внутреннем списке дочерних контролов хозяина и будет в дальнейшем убит вместе с хозяином.
Указателем уже является сама классовая переменная.
Код: Выделить всё
procedure TmForm.create_tab(path,fext:string);
var
TEMPatab:ttabsheet;//TEMPatab по сути это указатель на инстанс класса ttabsheet
...
begin
TEMPatab:=ttabsheet.Create(pages);//тут в куче создается инстанс ttabsheet, адрес его сохраняется в TEMPatab, муть с new\dispose ненужна
//также раз указан владелец - указатель на созданый таб сохраняеися внутри pages
Указатели нужны чтобы создавать в куче например рекорды, обжекты, простые массивы. Классы, динмассивы, длинные стринги это уже указатели по своему внутреннему устройству.
Сохранять указатели в списках\переменныч\ещеекакто - в принципе обязательно чтоб работать с созданными данными и потом не забыть уничтожить их. Но в данном случае нам на помощь приходит LCL с своими "механизмами" owner и sender. Если потребуется чтото большее чем убийство контрола вместе с хозяином или "вспоминание" о контроле только при событии от него в виде содержимого sender - TEMPatab придется гдето-както сохранять
Re: Базовый шаблон для создания редактора, с поддержкой вкла
Добавлено: 11.08.2016 23:55:38
Deimos
zub писал(а):Красота. Но зачем тут указатели?
Пока я только поправил бяки )))
Re: Базовый шаблон для создания редактора, с поддержкой вкла
Добавлено: 12.08.2016 10:18:11
Ichthyander
Кстати, а есть ли возможность, техническая и юридическая, вычленить/форкнуть редактор кода Lazarus в отдельное приложение и уже его развивать по открытой лицензии?
Re: Базовый шаблон для создания редактора, с поддержкой вкла
Добавлено: 12.08.2016 19:41:50
Deimos
Ichthyander писал(а):Кстати, а есть ли возможность, техническая и юридическая
Юридическая есть - Lazarus лицензирован под GPL
Re: Базовый шаблон для создания редактора, с поддержкой вкла
Добавлено: 12.08.2016 20:05:08
Лекс Айрин
В принципе, и техническая есть... просто открыть как проект и тупо удалить поддержку компилятора и прочего "левого" инструментария... правда, надо найти где именно он расположен.
Re: Базовый шаблон для создания редактора, с поддержкой вкла
Добавлено: 12.08.2016 20:13:15
Ichthyander
Deimos писал(а):Ichthyander писал(а):Кстати, а есть ли возможность, техническая и юридическая
Юридическая есть - Lazarus лицензирован под GPL
Ну под этой лицензией и оставить, проблем нет
Добавлено спустя 7 минут 35 секунд:Лекс Айрин писал(а):В принципе, и техническая есть... просто открыть как проект и тупо удалить поддержку компилятора и прочего "левого" инструментария... правда, надо найти где именно он расположен.
Да, наверное, в основном техническая. А так неплохо бы отталкиваться от этого функционала. Как бы уже есть к нему некая привычка и расширять мог бы каждый под себя или совместно...
Re: Базовый шаблон для создания редактора, с поддержкой вкла
Добавлено: 12.08.2016 20:14:54
Лекс Айрин
Кстати, есть отдельный модуль SourceEditor... можно и попробовать отделить...