Вопросы по LCL
Модератор: Модераторы
То на что должен ссылаться data лежит в другой части программы и не является class`ом, заворачивать всё в классы?
и искать мне нужно не по названию узла, а по свойствам data^ штатного способа для этого нет?
и искать мне нужно не по названию узла, а по свойствам data^ штатного способа для этого нет?
zub писал(а):То на что должен ссылаться data лежит в другой части программы и не является class`ом, заворачивать всё в классы?
Не обязательно, просто классы дают удобный способ проверки типа. Если есть другие варианты такой проверки -- можно и без классов.
zub писал(а):и искать мне нужно не по названию узла, а по свойствам data^ штатного способа для этого нет?
ЕМНИП -- нет, только перебирать ручками.
>>Не обязательно, просто классы дают удобный способ проверки типа.
Данный подход требует наличия в классах Data^ методов для идентификации в дереве либо громоздкой конструкции из if TObject(Node.Data) is TMyClass then ... разве это удобно?
Вот например ситуация:
узлу дерева у меня сопоставлено 2 объекта, причем объекты друг о дружке не знают. В идеале мне бы в одном ноде иметь Data и Data2
а в реале либо придется в data^ хранить структуру из 2х указателей (которую надо инициализировать и уничтожать),
либо хранить указатель на один объект и по кликам пользователя вычислять второй, это не очень накладно, но зачем - я эту информацию знал на этапе построения дерева.
чтото LCL не хочет переезжать в мой мозг. требует там перестановку
Данный подход требует наличия в классах Data^ методов для идентификации в дереве либо громоздкой конструкции из if TObject(Node.Data) is TMyClass then ... разве это удобно?
Вот например ситуация:
узлу дерева у меня сопоставлено 2 объекта, причем объекты друг о дружке не знают. В идеале мне бы в одном ноде иметь Data и Data2
а в реале либо придется в data^ хранить структуру из 2х указателей (которую надо инициализировать и уничтожать),
либо хранить указатель на один объект и по кликам пользователя вычислять второй, это не очень накладно, но зачем - я эту информацию знал на этапе построения дерева.
чтото LCL не хочет переезжать в мой мозг. требует там перестановку
Это я понимаю, но если завтра кому-то понадобится сопоставлять узлам не по два, а по 20 объектов, с таким идеальным подходом придётся заводить для каждого узла по двадцать свойств..
Odyssey
>>В Lazarus IDE есть куча полезных фич, облегчающих чтение.
почемуто на моих определениях эти фичи работают выборочно. иногда вообще не срабатывают, иногда прыгают неизвестно куда... реже работают как надо. На стандартных LCLных определениях тоже не всегда правильно работают.
В лазаре нет автодополнения после точки? типа self.[тут среда подсовывает возможные варианты]
delphi2006 тоже частенько ошибался, но редактор лазаря оставляет неприятное впечатление
Добавлено спустя 5 минут:
>>Это я понимаю, но если завтра кому-то понадобится сопоставлять узлам не по два, а по 20 объектов
я тоже это понимаю)), но по мне всетаки проще пихануть в tree своего наследника TTreeNode. где нужно 20 - пихать наследника с 20 свойствами, где не нужно - просто TTreeNode
Добавлено спустя 1 час 1 минуту 45 секунд:
как быть с отладчиком? хочется видеть русские буквы, а не #208#145#208#187#208#190#208#186#208#184
причем в интерфейсной части соответственно чтоб нерегонял UTF->CPwin, а в логике программы оставлял CPwin - это фантастика?
>>В Lazarus IDE есть куча полезных фич, облегчающих чтение.
почемуто на моих определениях эти фичи работают выборочно. иногда вообще не срабатывают, иногда прыгают неизвестно куда... реже работают как надо. На стандартных LCLных определениях тоже не всегда правильно работают.
В лазаре нет автодополнения после точки? типа self.[тут среда подсовывает возможные варианты]
delphi2006 тоже частенько ошибался, но редактор лазаря оставляет неприятное впечатление
Добавлено спустя 5 минут:
>>Это я понимаю, но если завтра кому-то понадобится сопоставлять узлам не по два, а по 20 объектов
я тоже это понимаю)), но по мне всетаки проще пихануть в tree своего наследника TTreeNode. где нужно 20 - пихать наследника с 20 свойствами, где не нужно - просто TTreeNode
Добавлено спустя 1 час 1 минуту 45 секунд:
как быть с отладчиком? хочется видеть русские буквы, а не #208#145#208#187#208#190#208#186#208#184
причем в интерфейсной части соответственно чтоб нерегонял UTF->CPwin, а в логике программы оставлял CPwin - это фантастика?
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
>> почемуто на моих определениях эти фичи работают выборочно
Ни разу не было ложных срабатываний ^_^ Фичи с Alt+Up/Ctrl+Click и Ctrk+h - дико удобны и всё-всё облегчают ^_^
>> но по мне всетаки проще пихануть в tree своего наследника TTreeNode
попробуйте TVirtualTreeView.
>>как быть с отладчиком?
Я - отключил ^_^ Логирование рулит ^_^
Ни разу не было ложных срабатываний ^_^ Фичи с Alt+Up/Ctrl+Click и Ctrk+h - дико удобны и всё-всё облегчают ^_^
>> но по мне всетаки проще пихануть в tree своего наследника TTreeNode
попробуйте TVirtualTreeView.
>>как быть с отладчиком?
Я - отключил ^_^ Логирование рулит ^_^
>>Ни разу не было ложных срабатываний
завидую. а "автодополнение" работает?
что с фичами может быть у меня не так? пробовал разные версии лазаря - везде одинаково.
>>попробуйте TVirtualTreeView.
спасибо. запомню, но сначала разберусь со стандартными.
получилось добавлять свои ноды переотределив CreateNode. - некрасиво, много лишних приведений типов. и наверно ненадежно?
>>Я - отключил ^_^ Логирование рулит ^_^
лог есть. но всё в него не запихнешь. без отладчика никак
завидую. а "автодополнение" работает?
что с фичами может быть у меня не так? пробовал разные версии лазаря - везде одинаково.
>>попробуйте TVirtualTreeView.
спасибо. запомню, но сначала разберусь со стандартными.
получилось добавлять свои ноды переотределив CreateNode. - некрасиво, много лишних приведений типов. и наверно ненадежно?
>>Я - отключил ^_^ Логирование рулит ^_^
лог есть. но всё в него не запихнешь. без отладчика никак
zub писал(а):лог есть. но всё в него не запихнешь
что "всё"?
>>что "всё"?
все параметры нужные для отладки
я имею ввиду чтото типа:
или под "логирование" понимается чтото другое?
все параметры нужные для отладки
я имею ввиду чтото типа:
Код: Выделить всё
{$IFDEF TOTALYLOG}programlog.logoutstr('Это='+inttostr(eto),0); {$ENDIF} или под "логирование" понимается чтото другое?
Последний раз редактировалось zub 11.06.2010 12:00:41, всего редактировалось 1 раз.
zub
Используйте латиницу для отладки
Используйте латиницу для отладки
zub писал(а):почемуто на моих определениях эти фичи работают выборочно. иногда вообще не срабатывают, иногда прыгают неизвестно куда... реже работают как надо. На стандартных LCLных определениях тоже не всегда правильно работают.
В лазаре нет автодополнения после точки? типа self.[тут среда подсовывает возможные варианты]
delphi2006 тоже частенько ошибался, но редактор лазаря оставляет неприятное впечатление
Очень странно, у меня ни разу не возникало нареканий. Может быть потому, что пользуюсь в основном классами и почти не пользуюсь структурами/указателями на них. Автодополнение тоже есть, по "." и по Ctrl+Space. Тоже восхитительно работает. Периодически там возникают нежелательные косметические улучшения, но это решается с помощью багтрекера
Кстати, а какую версию вы пробовали? Если только релизы, то возможны нарекания. С момента последнего релиза Lazarus улучшился несоизмеримо больше чем за все предыдущие релизы. Поэтому сам осторожно сижу на svn версии, ещё как вариант можно качать снапшоты. Но релизы уже довольно сильно устарели, я бы сидел на них только в крайнем случае.
zub писал(а):как быть с отладчиком? хочется видеть русские буквы, а не #208#145#208#187#208#190#208#186#208#184
причем в интерфейсной части соответственно чтоб нерегонял UTF->CPwin, а в логике программы оставлял CPwin - это фантастика?
Тут я пас, у меня отладчик не дружит с антивирусом
>>Очень странно, у меня ни разу не возникало нареканий.
У меня - в основном object`ы, $INCLUDE в начале каждого файла, иногда $IFNDEF в секции uses. Поэкспериментирую что портит картину
до вчера пользовался 0.9.29-25243, сегодня откатился на 0.9.28.2. разницы в редакторе не заметил. обновлюсь.
>>вроде бы даже кириллица в utf-8 во всплывающих подсказках работала
всплывающие подсказки не обратил вниманья, в watches - кирилицы нет
У меня - в основном object`ы, $INCLUDE в начале каждого файла, иногда $IFNDEF в секции uses. Поэкспериментирую что портит картину
до вчера пользовался 0.9.29-25243, сегодня откатился на 0.9.28.2. разницы в редакторе не заметил. обновлюсь.
>>вроде бы даже кириллица в utf-8 во всплывающих подсказках работала
всплывающие подсказки не обратил вниманья, в watches - кирилицы нет
Видимо навигационные "фичи" не работают иззи сообщения об ошибке:
появляющегося при выборе "найти объявление" в контекстном меню редактора. sysutils.ppu по указанному пути присутствует. почему не видит?
Код: Выделить всё
gui\projecttreewnd.pas(17,52) Error: не найден исходный код: модуль C:\lazarus\fpc\2.4.0\units\i386-win32\rtl\sysutils.ppuпоявляющегося при выборе "найти объявление" в контекстном меню редактора. sysutils.ppu по указанному пути присутствует. почему не видит?
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
Не найден каталог исходных кодов FPC, причём Lazarus должен при каждом запуска расстраиваться по этому поводу. Правится через меню: Окружение->Параметры->Каталог исходного кода FPC. Версия исходников должна совпадать с версией компилятора.
Извиняюсь, протупил)) смутило что ругается на ppu ане на рр, хотя русскими быувами написано)). Всё заработало. спасибо Brainenjii
Добавлено спустя 4 часа 29 минут 22 секунды:
А как у LCL с совместимостью с VCL? переделал несколько простейших форм, попробовал компилировать на delphi - doВсякаяХрень в VCL отсутствует, некоторые декларации отличаются. реально делать чтоб работало и там и там или не стоит заморачиваться?
Добавлено спустя 4 часа 29 минут 22 секунды:
А как у LCL с совместимостью с VCL? переделал несколько простейших форм, попробовал компилировать на delphi - doВсякаяХрень в VCL отсутствует, некоторые декларации отличаются. реально делать чтоб работало и там и там или не стоит заморачиваться?
