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

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

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

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

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



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

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

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

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

通常のセッティング

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

プロパティまたはメソッド説明
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です
BackColorBoth BackColorとAlterBackColorの両方のプロパティを設定します
このプロパティは代入のみ可能です
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です
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です

グローバルセッティング

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

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

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

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

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

プロパティ説明
HeaderContentBackColor HeaderContentの背景色を設定・取得します
FooterContentBackColor FooterContentの背景色を設定・取得します
ContentBackColor Contentの背景色を設定・取得します
BorderColor フィールドの境界線の色を設定・取得します
BorderStyle フィールドの境界線のスタイルを設定・取得します
CaptionBorderColor 見出しフィールドの境界線の色を設定・取得します
RecordBorderColor レコードの境界線の色を設定・取得します
RecordBorderStyle レコードの境界線のスタイルを設定・取得します
FixedColBorderColor 固定列の境界線の色を設定・取得します
Trnansparentとすることで、固定列の境界線は描かれなくなります
FixedColBorderStyle 固定列の境界線のスタイルを設定・取得します
ResizingLineColor ドラッグによる列幅変更時に描画される線の色を設定・取得します
UserColResizable ユーザがマウスのドラッグで列幅を変更することを許すかを設定・取得します
ALLOW:列幅変更を許します
DISABLE:列幅変更を禁止します
UserColAdjustable ユーザがダブルクリックで列幅のアジャストを行うことを許すかを設定・取得します
ALLOW:アジャストを許します
DISABLE:アジャストを禁止します
UserSortable ユーザがダブルクリックでレコードのソートを行うことを許すかを設定・取得します
ALLOW:ソートを許します
DISABLE:ソートを禁止します
ScrollUnit フォーカス移動に伴うスクロールの単位を設定・取得します
FIELD:フィールド単位でスクロールします
RECORD:レコード単位でスクロールします
EnterContent どのフィールドもフォーカスを得ていない状態で、テーブルがフォーカスを得た時に
自動的にフォーカスされるコンテントを設定・取得します
FocusColorAlways テーブルがフォーカスを得ていない時に、
FocusFieldとFocusRecordの色を有効にするかを設定・取得します

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内の全フィールドの背景色を変更します。 BackColorとAlterBackColorの両方を設定します。

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

キーが[2]のフィールドの背景色を変更します。 こうした場合は、フィールドディスクリプタのセッティングを用います。 偶数レコードと奇数レコードが同じ色になるように、 BackColorBothプロパティに対して設定します。

    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.BackColorBoth = Color.Aqua                
        End With
        rp.AddField("3", New CTextFieldProvider, .Next)
    End With  

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

    Me.Table.Content.Records(4).Setting.BackColorBoth = Color.Coral

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

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

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


Copyright (c) 2009, SystemBase Co.,Ltd.
All rights reserved.