Вопросы по LCL

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

То на что должен ссылаться data лежит в другой части программы и не является class`ом, заворачивать всё в классы?
и искать мне нужно не по названию узла, а по свойствам data^ штатного способа для этого нет?
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

zub писал(а):То на что должен ссылаться data лежит в другой части программы и не является class`ом, заворачивать всё в классы?

Не обязательно, просто классы дают удобный способ проверки типа. Если есть другие варианты такой проверки -- можно и без классов.
zub писал(а):и искать мне нужно не по названию узла, а по свойствам data^ штатного способа для этого нет?

ЕМНИП -- нет, только перебирать ручками.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

>>Не обязательно, просто классы дают удобный способ проверки типа.
Данный подход требует наличия в классах Data^ методов для идентификации в дереве либо громоздкой конструкции из if TObject(Node.Data) is TMyClass then ... разве это удобно?

Вот например ситуация:
узлу дерева у меня сопоставлено 2 объекта, причем объекты друг о дружке не знают. В идеале мне бы в одном ноде иметь Data и Data2
а в реале либо придется в data^ хранить структуру из 2х указателей (которую надо инициализировать и уничтожать),
либо хранить указатель на один объект и по кликам пользователя вычислять второй, это не очень накладно, но зачем - я эту информацию знал на этапе построения дерева.

чтото LCL не хочет переезжать в мой мозг. требует там перестановку
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

Это я понимаю, но если завтра кому-то понадобится сопоставлять узлам не по два, а по 20 объектов, с таким идеальным подходом придётся заводить для каждого узла по двадцать свойств..
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

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 - это фантастика?
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

>> почемуто на моих определениях эти фичи работают выборочно
Ни разу не было ложных срабатываний ^_^ Фичи с Alt+Up/Ctrl+Click и Ctrk+h - дико удобны и всё-всё облегчают ^_^
>> но по мне всетаки проще пихануть в tree своего наследника TTreeNode
попробуйте TVirtualTreeView.
>>как быть с отладчиком?
Я - отключил ^_^ Логирование рулит ^_^
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

>>Ни разу не было ложных срабатываний
завидую. а "автодополнение" работает?
что с фичами может быть у меня не так? пробовал разные версии лазаря - везде одинаково.

>>попробуйте TVirtualTreeView.
спасибо. запомню, но сначала разберусь со стандартными.
получилось добавлять свои ноды переотределив CreateNode. - некрасиво, много лишних приведений типов. и наверно ненадежно?

>>Я - отключил ^_^ Логирование рулит ^_^
лог есть. но всё в него не запихнешь. без отладчика никак
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

zub писал(а):лог есть. но всё в него не запихнешь

что "всё"? :)
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

>>что "всё"?
все параметры нужные для отладки
я имею ввиду чтото типа:

Код: Выделить всё

{$IFDEF TOTALYLOG}programlog.logoutstr('Это='+inttostr(eto),0); {$ENDIF} 

или под "логирование" понимается чтото другое?
Последний раз редактировалось zub 11.06.2010 12:00:41, всего редактировалось 1 раз.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

zub
Используйте латиницу для отладки
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

zub писал(а):почемуто на моих определениях эти фичи работают выборочно. иногда вообще не срабатывают, иногда прыгают неизвестно куда... реже работают как надо. На стандартных LCLных определениях тоже не всегда правильно работают.
В лазаре нет автодополнения после точки? типа self.[тут среда подсовывает возможные варианты]
delphi2006 тоже частенько ошибался, но редактор лазаря оставляет неприятное впечатление

Очень странно, у меня ни разу не возникало нареканий. Может быть потому, что пользуюсь в основном классами и почти не пользуюсь структурами/указателями на них. Автодополнение тоже есть, по "." и по Ctrl+Space. Тоже восхитительно работает. Периодически там возникают нежелательные косметические улучшения, но это решается с помощью багтрекера :) Своей текущей svn-ревизией 25873 я более чем доволен.

Кстати, а какую версию вы пробовали? Если только релизы, то возможны нарекания. С момента последнего релиза Lazarus улучшился несоизмеримо больше чем за все предыдущие релизы. Поэтому сам осторожно сижу на svn версии, ещё как вариант можно качать снапшоты. Но релизы уже довольно сильно устарели, я бы сидел на них только в крайнем случае.

zub писал(а):как быть с отладчиком? хочется видеть русские буквы, а не #208#145#208#187#208#190#208#186#208#184
причем в интерфейсной части соответственно чтоб нерегонял UTF->CPwin, а в логике программы оставлял CPwin - это фантастика?

Тут я пас, у меня отладчик не дружит с антивирусом :) Поэтому тоже использую лог. Но около месяца назад когда проверял отладчик и отключал антивирь, вроде бы даже кириллица в utf-8 во всплывающих подсказках работала. Хотя могу и ошибаться.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

>>Очень странно, у меня ни разу не возникало нареканий.
У меня - в основном object`ы, $INCLUDE в начале каждого файла, иногда $IFNDEF в секции uses. Поэкспериментирую что портит картину
до вчера пользовался 0.9.29-25243, сегодня откатился на 0.9.28.2. разницы в редакторе не заметил. обновлюсь.

>>вроде бы даже кириллица в utf-8 во всплывающих подсказках работала
всплывающие подсказки не обратил вниманья, в watches - кирилицы нет
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Видимо навигационные "фичи" не работают иззи сообщения об ошибке:

Код: Выделить всё

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

Сообщение Brainenjii »

Не найден каталог исходных кодов FPC, причём Lazarus должен при каждом запуска расстраиваться по этому поводу. Правится через меню: Окружение->Параметры->Каталог исходного кода FPC. Версия исходников должна совпадать с версией компилятора.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Извиняюсь, протупил)) смутило что ругается на ppu ане на рр, хотя русскими быувами написано)). Всё заработало. спасибо Brainenjii

Добавлено спустя 4 часа 29 минут 22 секунды:
А как у LCL с совместимостью с VCL? переделал несколько простейших форм, попробовал компилировать на delphi - doВсякаяХрень в VCL отсутствует, некоторые декларации отличаются. реально делать чтоб работало и там и там или не стоит заморачиваться?
Ответить