UTable .NET Framework用 表入力コンポーネント
ドキュメント

色・フォント・アライメントなどの設定

色・フォント・アライメントなどの設定は、セッティング(CSetting)というオブジェクトに対して行います。 UTable内には、セッティングを持つ要素がいくつかあり、それぞれ固有のスコープを持っています。

セッティングを持つ要素を以下に示します。

要素スコープ優先度
テーブル そのテーブル内の全フィールド
レコードプロバイダ そのレコードプロバイダが設定された全てのコンテント内の全フィールド



コンテント そのコンテント内の全フィールド
フィールドディスクプリタ そのフィールドディスクプリタから生成された全フィールド
レコード そのレコード内の全フィールド
フィールド そのフィールド自身のみ

例えば、テーブル全体のフォントを設定したいといった場合、 テーブルのセッティングに対して設定します。 ある特定のフィールドだけ特殊なフォントを用いたいといった場合は、 そのフィールドのセッティングに設定します。

設定内容が衝突した場合、優先度の高いものが採用されます。 例えば、フィールドとテーブルそれぞれのセッティングにフォントの設定がなされていた場合は、 フィールドのセッティングが持つフォントが採用されます。

これらの要素のうち、テーブルだけはグローバルセッティング(CGlobalSetting)という特殊なセッティングを持っています。 設定項目の中には、グローバルセッティングにしかないものがあります。

セッティング

セッティングを持つ要素は次のプロパティとメソッドを持ちます。

プロパティまたはメソッド説明
Setting セッティングを設定・取得します
セッティングが存在しない状態でこのプロパティを参照すると、
自動的にセッティングが作成されて返されます
HasSetting() この要素がセッティングを持っているかを返します
ClearSetting() セッティングを捨てます

要素が作成された直後は、その要素はセッティングを持っていません。 セッティングを作成するには、Settingプロパティを参照します。

    Field.Setting.Font = font 'フィールドのセッティングが作られ、フォントが設定される

CSettingクラスのコンストラクタでセッティングを作成することもできます。 また、複数の要素で、セッティングを共有することもできます。

    Dim setting As New UTable.CSetting()
    setting.Font = font
    Field1.Setting = setting
    Field2.Setting = setting    

要素がセッティングを持たないか、持っていたとしてもその値がデフォルト値だった場合、 より優先度の低いセッティングの内容が採用されます。

通常のセッティングが持つプロパティを以下に示します。

プロパティ説明
Font フィールドの値を表示するためのフォントを設定・取得します
デフォルト値はNothingです
CaptionFont 見出しフィールドの値を表示するためのフォントを設定・取得します
デフォルト値はNothingです
ForeColor 前景色を設定・取得します
デフォルト値はEmptyです
BackColor 背景色を設定・取得します
デフォルト値はEmptyです
AlterBackColor 奇数レコードの背景色を設定・取得します
Transparentとすることで、奇数レコードの背景色もBackColorになります
デフォルト値はEmptyです
CaptionForeColor 見出しフィールドの前景色を設定・取得します
デフォルト値はEmptyです
CaptionBackColor 見出しフィールドの背景色を設定・取得します
デフォルト値はEmptyです
FocusForeColor フォーカスを得ているフィールドの前景色を設定・取得します
Transparentとすることで、フォーカスを得ていても通常の前景色になります
デフォルト値はEmptyです
FocusBackColor フォーカスを得ているフィールドの背景色を設定・取得します
Transparentとすることで、フォーカスを得ていても通常の背景色になります
デフォルト値はEmptyです
FocusRecordForeColor フォーカスを得ているレコードの前景色を設定・取得します
Transparentとすることで、フォーカスを得ていても通常の前景色になります
デフォルト値はEmptyです
FocusRecordBackColor フォーカスを得ているフィールドの背景色を設定・取得します
Transparentとすることで、フォーカスを得ていても通常の背景色になります
デフォルト値はEmptyです
FocusCaptionForeColor フォーカスを得ているフィールドに対応した見出しフィールドの前景色を設定・取得します
Transparentとすることで、フォーカスを得ていても通常の前景色になります
デフォルト値はEmptyです
FocusCaptionBackColor フォーカスを得ているフィールドに対応した見出しフィールドの背景色を設定・取得します
Transparentとすることで、フォーカスを得ていても通常の背景色になります
デフォルト値はEmptyです
DraggingForeColor ドラッグされている見出しフィールドの前景色を設定・取得します
Transparentとすることで、ドラッグ中でも通常の前景色になります
デフォルト値はEmptyです
DraggingBackColor ドラッグされている見出しフィールドの背景色を設定・取得します
Transparentとすることで、ドラッグ中でも通常の背景色になります
デフォルト値はEmptyです
RangedForeColor 範囲選択されているフィールドの前景色を設定・取得します
デフォルト値はEmptyです
RangedBackColor 範囲選択されているフィールドの背景色を設定・取得します
デフォルト値はEmptyです
ButtonBackColor ボタンフィールドのボタンの背景色を設定・取得します
デフォルト値はEmptyです
CaptionStyle 見出しフィールドのスタイルを設定・取得します
METALISH:金属のような質感の表示になります
FLAT:フラット表示になります
デフォルト値はDEFAULTです
HorizontalAlignment 水平方向のアライメントを設定・取得します
LEFT:左寄せになります
MIDDLE:中央寄せになります
RIGHT:右寄せになります
デフォルト値はDEFAULTです
VerticalAlignment 垂直方向のアライメントを設定・取得します
TOP:上寄せになります
MIDDLE:中央寄せになります
BOTTOM:右寄せになります
デフォルト値はDEFAULTです
Editable 編集可能かを設定・取得します
ALLOW:編集可能になります
DISABLE:編集不可になります
デフォルト値はDEFAULTです
TabStop タブ移動によってフォーカスを得ることができるかを設定・取得します
STOP:フォーカスを得ることができます
NOTSTOP:フォーカスを得ることができません
デフォルト値はDEFAULTです
TextWrap フィールドの値が領域内に収まらない時に改行して表示するかを設定・取得します
WRAP:改行されます
NOWRAP:改行されません
デフォルト値はDEFAULTです
StayVertical スクロール状態によってフィールドの一部が表示領域外にはみ出していた場合に、
垂直方向にフィールド値を表示領域内に収めて描画するかを設定・取得します
NOT_STAY: 表示領域内に収めようとしません
STAY: 表示領域内に収めようとします
デフォルト値はDEFAULTです
StayHorizontal スクロール状態によってフィールドの一部が表示領域外にはみ出していた場合に、
水平方向にフィールド値を表示領域内に収めて描画するかを設定・取得します
NOT_STAY: 表示領域内に収めようとしません
STAY: 表示領域内に収めようとします
デフォルト値はDEFAULTです
LeftBound 水平アライメント(HorizontalAlignment)がMIDDLEまたはRIGHTの場合で、
フィールド幅が小さくても値の左端が表示領域をはみ出さないように描画するかを設定・取得します
NOT_BOUND: 表示領域をはみ出さないようにしません
BOUND: 表示領域をはみ出さないようにします
デフォルト値はDEFAULTです
TopBound 垂直アライメント(VerticalAlignment)がMIDDLEまたはBOTTOMの場合で、
フィールド高さが小さくても値の上端が表示領域をはみ出さないように描画するかを設定・取得します
NOT_BOUND: 表示領域をはみ出さないようにしません
BOUND: 表示領域をはみ出さないようにします
デフォルト値はDEFAULTです
Cursor マウスカーソルがフィールドの上にあるときに表示されるCursorオブジェクトを設定・取得します

ボーダーセッティング

フィールドやレコードの境界線をどのように描画するかを設定するには、 ボーダーセッティング(CBorderSetting)というオブジェクトを利用します。

ボーダーセッティングを持つ要素を以下に示します。

要素スコープ優先度
テーブル そのテーブル全体
レコードプロバイダ そのレコードプロバイダが設定された全てのコンテント全体

コンテント そのコンテント全体
レコード そのレコード全体

ボーダーセッティングを持つ要素には次のプロパティとメソッドがあります。

プロパティまたはメソッド説明
BorderSetting ボーダーセッティングを設定・取得します
ボーダーセッティングが存在しない状態でこのプロパティを参照すると、
自動的にセッティングが作成されて返されます
HasBorderSetting() この要素がボーダーセッティングを持っているかを返します
ClearBorderSetting() ボーダーセッティングを捨てます

ボーダーセッティングが持つプロパティを以下に示します。

プロパティ説明
BorderColor フィールドの境界線の色を設定・取得します
BorderStyle フィールドの境界線のスタイルを設定・取得します
CaptionBorderColor 見出しフィールドの境界線の色を設定・取得します
CaptionBorderStyle 見出しフィールドの境界線のスタイルを設定・取得します
RecordBorderColor レコードの境界線の色を設定・取得します
RecordBorderStyle レコードの境界線のスタイルを設定・取得します

グローバルセッティング

テーブルはグローバルセッティングを持ちます。 グローバルセッティングは捨てることができないので、 テーブルにはHas(Border)SettingやClear(Border)Settingメソッドは存在しません。

グローバルセッティングはSettingプロパティで参照でき、 通常のセッティングやボーダーセッティングが持つプロパティを全て持っています。

    Table.Setting.Font = font 'テーブル全体のフォントを設定

他の全ての要素の持つセッティングが存在しないかデフォルト値だった場合、 最終的にグローバルセッティングの値が用いられます。 そのため、グローバルセッティングのプロパティの値をDEFAULTもしくはEmptyとはしないで下さい。

グローバルセッティングだけが持つプロパティを以下に示します。

プロパティ説明
HeaderContentBackColor HeaderContentの背景色を設定・取得します
FooterContentBackColor FooterContentの背景色を設定・取得します
ContentBackColor Contentの背景色を設定・取得します
FixedColBorderColor 固定列の境界線の色を設定・取得します
Trnansparentとすることで、固定列の境界線は描かれなくなります
FixedColBorderStyle 固定列の境界線のスタイルを設定・取得します
ResizingLineColor ドラッグによる列幅変更時に描画される線の色を設定・取得します
UserColResizable ユーザがマウスのドラッグで列幅を変更することを許すかを設定・取得します
ALLOW:列幅変更を許します
DISABLE:列幅変更を禁止します
UserColAdjustable ユーザがダブルクリックで列幅のアジャストを行うことを許すかを設定・取得します
ALLOW:アジャストを許します
DISABLE:アジャストを禁止します
UserSortable ユーザがダブルクリックでレコードのソートを行うことを許すかを設定・取得します
ALLOW:ソートを許します
DISABLE:ソートを禁止します
UserRangeSelectable ユーザ操作での範囲選択を許すかを設定・取得します
UserRangeSelectUnit ユーザ操作で範囲選択を行う場合での、範囲の単位を設定・取得します FIELD : フィールド単位で選択します RECORD : レコード単位で選択します
RecordSelectableByCaptionClick ユーザが見出しフィールををクリックすることで、
レコード全体を選択可能とするかを設定・取得します
このプロパティは、UserRangeSelectableがTrueのときのみ有効になります
ColSelectableByCaptionClick ユーザが見出しフィールををクリックすることで、
列全体を選択可能とするかを設定・取得します
このプロパティは、UserRangeSelectableがTrueのときのみ有効になります
AllSelectableByCaptionClick ユーザが見出しフィールををクリックすることで、
コンテント全体を選択可能とするかを設定・取得します
このプロパティは、UserRangeSelectableがTrueのときのみ有効になります
DefaultFieldSelectableByCaptionClick ユーザが見出しフィールドをクリックすることで、
そのレコードのデフォルトフィールドを選択可能とするかを設定・取得します
ScrollUnit フォーカス移動に伴うスクロールの単位を設定・取得します
FIELD:フィールド単位でスクロールします
RECORD:レコード単位でスクロールします
EnterContent どのフィールドもフォーカスを得ていない状態で、テーブルがフォーカスを得た時に
自動的にフォーカスされるコンテントを設定・取得します
FocusColorAlways テーブルがフォーカスを得ていない時に、
FocusFieldとFocusRecordの色を有効にするかを設定・取得します
AlterConsistent AlterBackColorがコンテントの階層を無視して適応されるかを設定・取得します
VScrollBarAlways 内容が表示領域をはみ出していなくても
常に縦スクロールバーを表示するかを設定・取得します
HScrollBarAlways 内容が表示領域をはみ出していなくても
常に水平スクロールバーを表示するかを設定・取得します
ScrollToEdge 右端の列が、表示領域の左端へ来るまで
スクロール範囲を拡大するかを設定・取得します
MouseWheelScrollRows マウスホイールによる縦スクロールでの
最小単位の移動行数を設定・取得します

DynamicSettingメソッド

フィールドのDynamicSettingメソッドを呼ぶと、動的セッティングを取得することができます。 動的セッティングは、そのフィールドを含む全てのスコープのセッティングを含むオブジェクトで、 その中から優先度の最も高い設定値を動的に検索して返します。

    font = Field.DynamicSetting.Font '最も優先度の高いFontの設定値を取得する

サンプル

実際にセッティングに対して設定を行うコードを見ていきましょう。

以下のテーブルを作成します。

    Dim rp As New UTable.CRecordProvider
    With New CLayoutBuilder            
        rp.AddField("0", New CTextFieldProvider, .Next)
        rp.AddField("1", New CTextFieldProvider, .Next)
        rp.AddField("2", New CTextFieldProvider, .Next)
        rp.AddField("3", New CTextFieldProvider, .Next)
    End With
    Me.Table.Content.SetRecordProvider(rp)
    Me.Table.CreateCaption()
 
    Using Me.Table.RenderBlock
        For i As Integer = 1 To 10
            Me.Table.Content.AddRecord()
        Next
    End Using  

まずは、フォーカスを得たフィールドとレコードの色を無効にしてみましょう。 これは、グローバルセッティングにしかないプロパティです。

    Me.Table.Setting.FocusBackColor = Color.Transparent
    Me.Table.Setting.FocusRecordBackColor = Color.Transparent

Content内の全フィールドの背景色を変更します。 AlterBackColorは、奇数レコードの背景色です。

    Me.Table.Content.Setting.BackColor = Color.Beige
    Me.Table.Content.Setting.AlterBackColor = Color.Bisque

キーが[2]のフィールドの背景色を変更します。 こうした場合は、フィールドディスクリプタのセッティングを用います。 AlterBackColorにTransparent(透明)を設定すると、 何レコード目であってもBackColorの設定が適用されます。

    Dim rp As New UTable.CRecordProvider
    With New CLayoutBuilder            
        rp.AddField("0", New CTextFieldProvider, .Next)
        rp.AddField("1", New CTextFieldProvider, .Next)
        With rp.AddField("2", New CTextFieldProvider, .Next)
            .Setting.BackColor = Color.Aqua
            .Setting.AlterBackColor = Color.Transparent
        End With
        rp.AddField("3", New CTextFieldProvider, .Next)
    End With  

(0から数えて)4番目のレコードの背景色を変更します。 フィールドディスクリプタのセッティングよりも、 レコードのセッティングのほうが優先されることに気をつけて下さい。

    With Me.Table.Content.Records(4)
        .Setting.BackColor = Color.Coral
        .Setting.AlterBackColor = Color.Transparent
    End With

フィールドの背景色、前景色、フォントを変更します。 フィールドのセッティングに設定した内容は常に優先されます。

    With Me.Table.Content.Records(4).Fields("2")
        .Setting.BackColor = Color.Brown
        .Setting.AlterBackColor = Color.Transparent
        .Setting.ForeColor = Color.White
        .Setting.Font = New Font(SystemFonts.DefaultFont, FontStyle.Italic Or FontStyle.Bold)
        .Value = "BOLD&ITALIC"
    End With  

最後に、ボーダーセッティングを用いてレコードの境界線の色を変更します。

   Me.Table.Content.BorderSetting.RecordBorderColor = Color.Blue
   Me.Table.Content.Records(2).BorderSetting.RecordBorderColor = Color.Red

次へ    ドキュメントのトップ / ホーム


Copyright (c) 2008-2011, SystemBase Co.,Ltd.
All rights reserved.