色・フォント・アライメントなどの設定
色・フォント・アライメントなどの設定は、セッティングというオブジェクトに対して行います。
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です
|
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です
|
ボーダーセッティング
フィールドやレコードの境界線をどのように描画するかを設定するには、
ボーダーセッティングというオブジェクトを利用します。
ボーダーセッティングを持つ要素を以下に示します。
要素 | スコープ | 優先度 |
テーブル |
そのテーブル全体
|
低
|
レコードプロバイダ |
そのレコードプロバイダが設定された全てのコンテント全体
|
↓
↓
|
コンテント |
そのコンテント全体
|
レコード |
そのレコード全体
|
高
|
テーブル以外でボーダーセッティングを持つ要素は必ず次のプロパティとメソッドを持ちます。
プロパティまたはメソッド | 説明 |
BorderSetting
|
ボーダーセッティングを設定・取得します
ボーダーセッティングが存在しない状態でこのプロパティを参照すると、
自動的にセッティングが作成されて返されます
|
HasBorderSetting()
|
この要素がボーダーセッティングを持っているかを返します
|
ClearBorderSetting()
|
ボーダーセッティングを捨てます
|
ボーダーセッティングが持つプロパティを以下に示します。
プロパティ | 説明 |
BorderColor |
フィールドの境界線の色を設定・取得します
|
BorderStyle |
フィールドの境界線のスタイルを設定・取得します
|
CaptionBorderColor |
見出しフィールドの境界線の色を設定・取得します
|
CaptionBorderStyle |
見出しフィールドの境界線のスタイルを設定・取得します
|
RecordBorderColor |
レコードの境界線の色を設定・取得します
|
RecordBorderStyle |
レコードの境界線のスタイルを設定・取得します
|
グローバルセッティング
テーブルはグローバルセッティングを持ちます。
グローバルセッティングは捨てることができないので、
テーブルにはHas(Border)SettingやClear(Border)Settingメソッドは存在しません。
グローバルセッティングはSettingプロパティで参照でき、
通常のセッティングやボーダーセッティングが持つプロパティを全て持っています。
Table.Setting.Font = font 'テーブル全体のフォントを設定
他の全ての要素の持つセッティングが存在しないかデフォルト値だった場合、
最終的にグローバルセッティングの値が用いられます。
そのため、グローバルセッティングのプロパティの値を、
通常のセッティングにおけるデフォルト値とはしないで下さい。
グローバルセッティングだけが持つプロパティを以下に示します。
プロパティ | 説明 |
HeaderContentBackColor |
HeaderContentの背景色を設定・取得します
|
FooterContentBackColor |
FooterContentの背景色を設定・取得します
|
ContentBackColor |
Contentの背景色を設定・取得します
|
FixedColBorderColor |
固定列の境界線の色を設定・取得します
Trnansparentとすることで、固定列の境界線は描かれなくなります
|
FixedColBorderStyle |
固定列の境界線のスタイルを設定・取得します
|
ResizingLineColor |
ドラッグによる列幅変更時に描画される線の色を設定・取得します
|
UserColResizable |
ユーザがマウスのドラッグで列幅を変更することを許すかを設定・取得します
ALLOW:列幅変更を許します
DISABLE:列幅変更を禁止します
|
UserColAdjustable |
ユーザがダブルクリックで列幅のアジャストを行うことを許すかを設定・取得します
ALLOW:アジャストを許します
DISABLE:アジャストを禁止します
|
UserSortable |
ユーザがダブルクリックでレコードのソートを行うことを許すかを設定・取得します
ALLOW:ソートを許します
DISABLE:ソートを禁止します
|
ScrollUnit |
フォーカス移動に伴うスクロールの単位を設定・取得します
FIELD:フィールド単位でスクロールします
RECORD:レコード単位でスクロールします
|
EnterContent |
どのフィールドもフォーカスを得ていない状態で、テーブルがフォーカスを得た時に
自動的にフォーカスされるコンテントを設定・取得します
|
FocusColorAlways |
テーブルがフォーカスを得ていない時に、
FocusFieldとFocusRecordの色を有効にするかを設定・取得します
|
AlterConsistent |
AlterBackColorを、コンテントの階層を無視して設定します。
|
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
最後に、ボーダーセッティングを用いてレコードの境界線の色を変更します。
Me.Table.Content.BorderSetting.RecordBorderColor = Color.Blue
Me.Table.Content.Records(2).BorderSetting.RecordBorderColor = Color.Red
次へ
ドキュメントのトップ /
ホーム
|