Как расположить представления вертикально с полосой прокрутки в VisualWorks?
Я пишу RSSReader на Smalltalk, поэтому у меня есть два класса Model: RSSModel (заголовок, записи) и EntryModel (заголовок, изображение, содержимое, дата)
У меня есть список EntryView (наследует от UI.View), теперь у меня есть RSSView, и мой метод displayOn будет отображать записи по вертикали с разрывом между каждым:
| dy iView gap |
gap := 5.
dy := 0.
1 to: model entries size
do:
[:i |
iView := EntryView model: (model entries at: i).
iView displayOn: aGC at: 0 @ dy.
dy := dy + 89 + gap]
и результат:
Я не уверен, правильно ли я это делаю, поэтому, если у вас есть лучшее решение для отображения RSSView, пожалуйста, скажите мне.
Вопросы:
- Как получить высоту входа? Сейчас пишу
dy:=dy+89+gap
где 89 - жестко заданная высота входа. - Как включить полосы прокрутки для прокрутки записей в окне?
1 ответ
Как узнать высоту входа? Использование:
"entry bounds height"
Как включить полосы прокрутки?
Чтобы ответить на этот вопрос, сначала я укажу, что способ отображения EntryView на самом деле не самый лучший. Вы хотите создать пользовательский элемент управления, как я объяснил в вашем другом вопросе Как создать окно в smalltalk. Вы можете использовать CompositeView для представления и добавить каждый из EntryViews в композит, используя add:at:.
Как только вы это сделаете, вы можете перейти на вкладку Details в редакторе свойств UIPainter представления и включить вертикальные полосы прокрутки.