Spreadの工夫 2

前回の「clsShtData」の主要な利用価値は、[コード]で[デザイン]を決めることと、次の二つの機能です。

一つ目は、列名に対して列番号(Index)を返す仕組みです。

    SpdIdx賃料 = .画面設定(multiHeader, 非表示, True)

では、SpdIdx賃料は実は次のように定義されています。

    Private SpdIdx賃料 As Dictionary(Of String, Integer)

例えば、 SpdIdx賃料(“金額”)の値は2、SpdIdx賃料(“税区分”)の値は3を返します。
同じ列名があるときは、2番目以降は[金額_2]等のように出現番号を付けて返します。
従って、SpdIdx賃料(“金額_2”)の値は8、SpdIdx賃料(“税区分_2”)の値は9を返します。
Spreadでは列や行の指定にはIndex(整数)を使いますが、これをハードコードにすることの煩わしさはプログラムを書く人なら分かると思います。

重宝しているもう一つは、Spreadの幅を計算するものです。まず、[行見出し]の幅で、シートの[RowHeader.Columns](一般に複数列)の幅です。次はシートの表示列(非表示ではなく)の幅の全合計で、前回のコードでは次式で設定しています。

    New clsSpdHeader("コード", 55, SpdIntCellType, False)

さらにバーティカルBarがあればその幅で、Spread の[VerticalScrollBarWidth]プロパティで得られます。
最後はSpreadの両サイドの[BorderStyle]です。
これらをすべて足し合わせてものが必要なSpread幅です。
これによってピタッとしたSpreadを作成できます。

このクラスを継承したクラスもいくつか作っています。
例えば、消費税や管理料の計算をするクラスもその一つです。

error: コピーできません !!