Как использовать пользовательский значок в виде дерева разговоров дельфина?
В виде дерева разговоров Dolphin Smalltalk я хотел бы использовать пользовательский значок, в зависимости от состояния отображаемого элемента (различное состояние, другой значок). Как я могу это сделать?
Я не могу понять, как использовать "мой" значок. Я создал класс "connection", с переменной экземпляра "connected" и двумя методами класса "connectedIcon" и unsnectedIcon, который возвращает изображения значков. Затем функция экземпляра "icon" возвращает одно или другое изображение в зависимости от состояния соединения.
Я могу добавить экземпляры этого класса в древовидное представление и увидеть имена соединений. Но как показать мои иконки?
Я попытался установить getImageBlock моего представления докладчика с помощью следующего выражения [:obj | значок объекта], но это не работает. (кажется, ничего не происходит).
это сделано в моей инициализации инициализации:
инициализировать супер инициализировать. treePresenter view getImageBlock: [:obj | значок объекта]
что с этим не так? с наилучшими пожеланиями Маурицио
3 ответа
Когда вы редактируете TreeView, одним из свойств является getImageBlock. По умолчанию это не блок, а другой объект, который понимает сообщение #'значение:' (класс IconicListAbstract). Вы можете заменить это свойство блоком кода (или другим объектом, который понимает #'value:') и ответить на изображение, которое вы хотите отобразить.
В Microsoft Windows значки обычно хранятся в DLL. Вы должны иметь возможность использовать проводник значков или инструмент редактирования, чтобы увидеть значки в DLL. Например, получите IconExplorer с http://www.mitec.cz/iconex.html и попробуйте открыть DolphinDR7.dll. Совпадают ли значки и цифры с тем, что вы видите, когда возвращаете число в своем приложении?
Чтобы определить (или переопределить) используемую библиотеку ресурсов, см. SessionManager>>#'defaultResLibPath'.
Как правило, getImageBlock устанавливается с помощью редактора свойств в редакторе GUI, но установка его с помощью кода также может работать.
Чудесный Дельфин Смолток!
У меня было две проблемы
1) как и где изменить метод getImageBlock моего Treepresenter. 2) где разместить иконки и как получить индекс изображения каждого значка.
Это решение:
1) это не нужно. Treeview отправляет в мою модель сообщение "#iconImageIndex", которое обрабатывается методом по умолчанию (в классе Object), который отправляет моему объекту сообщение #icon, а в результате этого сообщения (значок) - сообщение #iconIndex. сообщение понимается по значку, который отвечает своим собственным значком индекса.
Поэтому единственный метод, который мне нужен, - это #icon в моем классе Connection, который я реализовал следующим образом:
открыт значок ifTrue: [^ Соединение подключено Иконка] ifFalse: [^ Соединение не подключено Иконка]
В самом классе две иконки импортируются в изображение путем оценки createIconMethod, как объяснено в статье блога "Красота с меньшим количеством зверя".
Так что мои проблемы решены.
Спасибо всем. Маурицио.