Как расположить представления вертикально с полосой прокрутки в 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, пожалуйста, скажите мне.

Вопросы:

  1. Как получить высоту входа? Сейчас пишу dy:=dy+89+gap где 89 - жестко заданная высота входа.
  2. Как включить полосы прокрутки для прокрутки записей в окне?

1 ответ

Решение

Как узнать высоту входа? Использование:

"entry bounds height"

Как включить полосы прокрутки?

Чтобы ответить на этот вопрос, сначала я укажу, что способ отображения EntryView на самом деле не самый лучший. Вы хотите создать пользовательский элемент управления, как я объяснил в вашем другом вопросе Как создать окно в smalltalk. Вы можете использовать CompositeView для представления и добавить каждый из EntryViews в композит, используя add:at:.

Как только вы это сделаете, вы можете перейти на вкладку Details в редакторе свойств UIPainter представления и включить вертикальные полосы прокрутки.

Другие вопросы по тегам