0

私はSmalltalkでRSSReaderを書いているので、RSSModel(タイトル、エントリ)とEntryModel(タイトル、画像、コンテンツ、日付)の2つのモデルクラスがあります。

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. スクロールバーがウィンドウ内のエントリをスクロールできるようにするにはどうすればよいですか?
4

1 に答える 1

1

エントリの高さを取得する方法は? 使用する:

"entry bounds height"

スクロールバーを有効にするには?

これに答えるために、最初に、EntryView を表示する方法が実際には最善の方法ではないことを指摘します。他の質問How to create a window in smalltalk で説明したように、カスタム コントロールを作成したいと考えています。ビューに CompositeView を使用し、add:at: を使用して各 EntryView をコンポジットに追加できます。

それができたら、ビューの UIPainter プロパティ エディターの [詳細] タブに移動し、垂直スクロール バーをオンにします。

于 2012-11-09T23:09:26.623 に答える