作成日: 2018/09/06 最終更新日: 2018/09/06
文書種別
使用方法
詳細
C1Sizer上にC1FlexGridを配置した場合、そのままでは列幅/行高/フォントは拡大・縮小されません。C1Sizerは、C1FlexGrid自体のサイズ(グリッドの幅、高さ)を調節しますが、列幅や行高はC1FlexGridの内部オブジェクトのプロパティであるため、C1Sizerが関知しないのです。また、C1Sizerにはフォントサイズを変更する機能はありません。
これらを変更するには、リサイズに関連したイベント※を利用し、フォームの変更比率に合わせて、それぞれの値を調整するためのロジックを自前で用意する必要があります。
※C1SizerのResizeイベント、FormのResizeイベント、C1FlexGridのResizeイベントなど
以下に、C1SizerのResizeイベントを使用し、フォームのリサイズ前後の比率を用いて、C1FlexGridコントロールの各列の幅/各行の高さ/グリッドのフォントサイズを変更するコードを紹介します。
◎サンプルコード(VB)
◎サンプルコード(C#)
これらを変更するには、リサイズに関連したイベント※を利用し、フォームの変更比率に合わせて、それぞれの値を調整するためのロジックを自前で用意する必要があります。
※C1SizerのResizeイベント、FormのResizeイベント、C1FlexGridのResizeイベントなど
以下に、C1SizerのResizeイベントを使用し、フォームのリサイズ前後の比率を用いて、C1FlexGridコントロールの各列の幅/各行の高さ/グリッドのフォントサイズを変更するコードを紹介します。
◎サンプルコード(VB)
Dim wForm, hForm As Integer
Dim wCol() As Integer
Dim hRow() As Integer
Dim fGrid As Font
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' フォームサイズ、フォント、列幅、行高の初期値を保存
wForm = Me.Width
hForm = Me.Height
fGrid = C1FlexGrid1.Font
'wCol = New Integer((C1FlexGrid1.Cols.Count) - 1) {}
ReDim wCol(C1FlexGrid1.Cols.Count)
Dim i As Integer = 0
For i = 0 To C1FlexGrid1.Cols.Count - 1
wCol(i) = C1FlexGrid1.Cols(i).WidthDisplay
Next
'hRow = New Integer((C1FlexGrid1.Rows.Count) - 1) {}
ReDim hRow(C1FlexGrid1.Rows.Count)
Dim j As Integer = 0
For j = 0 To C1FlexGrid1.Rows.Count - 1
hRow(j) = C1FlexGrid1.Rows(j).HeightDisplay
Next
' テストデータ
C1FlexGrid1(0, 1) = "1111"
C1FlexGrid1(1, 1) = "AAAA"
End Sub
Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles MyBase.Resize
If (wForm > 0) Then
Dim rwForm As Double = (CType(Me.Width, Double) / CType(wForm, Double))
Dim i As Integer = 0
For i = 0 To C1FlexGrid1.Cols.Count - 1
' 列幅を調整
C1FlexGrid1.Cols(i).WidthDisplay = CType((CType(wCol(i), Double) * CType(rwForm, Double)), Integer)
Next
End If
If (hForm > 0) Then
Dim rhForm As Double = (CType(Me.Height, Double) / CType(hForm, Double))
' フォントサイズを調整
C1FlexGrid1.Font = New Font(fGrid.FontFamily, CType((fGrid.Size * CType(rhForm, Double)), Integer))
Dim j As Integer = 0
For j = 0 To C1FlexGrid1.Rows.Count - 1
' 行高を調整
C1FlexGrid1.Rows(j).HeightDisplay = CType((CType(hRow(j), Double) * CType(rhForm, Double)), Integer)
Next
End If
End Sub
Dim wCol() As Integer
Dim hRow() As Integer
Dim fGrid As Font
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' フォームサイズ、フォント、列幅、行高の初期値を保存
wForm = Me.Width
hForm = Me.Height
fGrid = C1FlexGrid1.Font
'wCol = New Integer((C1FlexGrid1.Cols.Count) - 1) {}
ReDim wCol(C1FlexGrid1.Cols.Count)
Dim i As Integer = 0
For i = 0 To C1FlexGrid1.Cols.Count - 1
wCol(i) = C1FlexGrid1.Cols(i).WidthDisplay
Next
'hRow = New Integer((C1FlexGrid1.Rows.Count) - 1) {}
ReDim hRow(C1FlexGrid1.Rows.Count)
Dim j As Integer = 0
For j = 0 To C1FlexGrid1.Rows.Count - 1
hRow(j) = C1FlexGrid1.Rows(j).HeightDisplay
Next
' テストデータ
C1FlexGrid1(0, 1) = "1111"
C1FlexGrid1(1, 1) = "AAAA"
End Sub
Private Sub Form1_Resize(sender As Object, e As EventArgs) Handles MyBase.Resize
If (wForm > 0) Then
Dim rwForm As Double = (CType(Me.Width, Double) / CType(wForm, Double))
Dim i As Integer = 0
For i = 0 To C1FlexGrid1.Cols.Count - 1
' 列幅を調整
C1FlexGrid1.Cols(i).WidthDisplay = CType((CType(wCol(i), Double) * CType(rwForm, Double)), Integer)
Next
End If
If (hForm > 0) Then
Dim rhForm As Double = (CType(Me.Height, Double) / CType(hForm, Double))
' フォントサイズを調整
C1FlexGrid1.Font = New Font(fGrid.FontFamily, CType((fGrid.Size * CType(rhForm, Double)), Integer))
Dim j As Integer = 0
For j = 0 To C1FlexGrid1.Rows.Count - 1
' 行高を調整
C1FlexGrid1.Rows(j).HeightDisplay = CType((CType(hRow(j), Double) * CType(rhForm, Double)), Integer)
Next
End If
End Sub
◎サンプルコード(C#)
int wForm, hForm;
int[] wCol, hRow;
Font fGrid;
private void Form1_Load(object sender, EventArgs e)
{
// フォームサイズ、フォント、列幅、行高の初期値を保存
wForm = this.Width;
hForm = this.Height;
fGrid = c1FlexGrid1.Font;
wCol = new int[c1FlexGrid1.Cols.Count];
for (int i = 0; i < c1FlexGrid1.Cols.Count; i++)
{
wCol[i] = c1FlexGrid1.Cols[i].WidthDisplay;
}
hRow = new int[c1FlexGrid1.Rows.Count];
for (int j = 0;j < c1FlexGrid1.Rows.Count; j++)
{
hRow[j] = c1FlexGrid1.Rows[j].HeightDisplay;
}
// テストデータ
c1FlexGrid1[0, 1] = "1111";
c1FlexGrid1[1, 1] = "AAAA";
}
private void c1Sizer1_Resize(object sender, EventArgs e)
{
if (wForm > 0)
{
double rwForm = (double)(this.Width) / (double)wForm;
for (int i = 0; i < c1FlexGrid1.Cols.Count; i++)
{
// 列幅を調整
c1FlexGrid1.Cols[i].WidthDisplay = (int)((double)wCol[i] * (double)rwForm);
}
}
if (hForm > 0)
{
double rhForm = (double)(this.Height) / (double)hForm;
// フォントサイズを調整
c1FlexGrid1.Font = new Font(fGrid.FontFamily, (int)(fGrid.Size * (double)rhForm));
for (int j = 0; j < c1FlexGrid1.Rows.Count; j++)
{
// 行高を調整
c1FlexGrid1.Rows[j].HeightDisplay = (int)((double)hRow[j] * (double)rhForm);
}
}
}
int[] wCol, hRow;
Font fGrid;
private void Form1_Load(object sender, EventArgs e)
{
// フォームサイズ、フォント、列幅、行高の初期値を保存
wForm = this.Width;
hForm = this.Height;
fGrid = c1FlexGrid1.Font;
wCol = new int[c1FlexGrid1.Cols.Count];
for (int i = 0; i < c1FlexGrid1.Cols.Count; i++)
{
wCol[i] = c1FlexGrid1.Cols[i].WidthDisplay;
}
hRow = new int[c1FlexGrid1.Rows.Count];
for (int j = 0;j < c1FlexGrid1.Rows.Count; j++)
{
hRow[j] = c1FlexGrid1.Rows[j].HeightDisplay;
}
// テストデータ
c1FlexGrid1[0, 1] = "1111";
c1FlexGrid1[1, 1] = "AAAA";
}
private void c1Sizer1_Resize(object sender, EventArgs e)
{
if (wForm > 0)
{
double rwForm = (double)(this.Width) / (double)wForm;
for (int i = 0; i < c1FlexGrid1.Cols.Count; i++)
{
// 列幅を調整
c1FlexGrid1.Cols[i].WidthDisplay = (int)((double)wCol[i] * (double)rwForm);
}
}
if (hForm > 0)
{
double rhForm = (double)(this.Height) / (double)hForm;
// フォントサイズを調整
c1FlexGrid1.Font = new Font(fGrid.FontFamily, (int)(fGrid.Size * (double)rhForm));
for (int j = 0; j < c1FlexGrid1.Rows.Count; j++)
{
// 行高を調整
c1FlexGrid1.Rows[j].HeightDisplay = (int)((double)hRow[j] * (double)rhForm);
}
}
}
関連情報
旧文書番号
83206