View 如何在VisualWorks中使用滚动条垂直排列视图?

View 如何在VisualWorks中使用滚动条垂直排列视图?,view,scrollbar,smalltalk,visualworks,View,Scrollbar,Smalltalk,Visualworks,我用Smalltalk编写RSSReader,所以我有两个模型类:RSSModel(title,entries)和EntryModel(title,image,content,date) 我有EntryView列表(继承自UI.View),现在我有了RSSView,我的displayOn方法将垂直显示条目,每个条目之间有间隙: | dy iView gap | gap := 5. dy := 0. 1 to: model entries s

我用Smalltalk编写RSSReader,所以我有两个模型类:RSSModel(title,entries)和EntryModel(title,image,content,date)

我有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是硬编码的入口高度
  • 如何启用滚动条在窗口中滚动条目

  • 如何获得入口的高度?使用:

    "entry bounds height"
    
    如何启用滚动条

    要回答这个问题,我首先要指出,显示EntryView的方式并不是最好的方式。您想要创建一个自定义控件,就像我在您的另一个问题中解释的那样。您可以对视图使用CompositeView,并使用add:at:将每个EntryView添加到组合中


    有了这些信息后,您可以转到视图的UIPainter属性编辑器中的“详细信息”选项卡,并打开垂直滚动条。

    但是如果我获得了入口边界高度,它会返回我的系统屏幕高度,为什么?为EntryView实现preferredBounds。检查其他实现的例子。这是可行的,但存在渲染问题:新打开的窗口看起来像在图像上:但当条目来自滚动时的不可见部分时,它看起来是这样的:可能有什么问题?