作成日: 2020/09/07 最終更新日: 2020/12/25
文書種別
不具合
状況
修正済み
詳細
FlexGridにRulesManagerを関連付け、その条件付き書式ルールのスタイル設定においてForeColorを変更するようにしているとき、ルールに基づいてセルの前景色が変更されると、テキストの描画位置が左あるいは上方向にわずかにずれることがあります。
例)
以下のサンプルでは、RulesManagerの"RankA"のON/OFFを切り替えると、C1FlexGridコントロールの"POINT"列で、ルールが適用された数値のがわずかにずれます。
◎サンプルコード(VB)
例)
以下のサンプルでは、RulesManagerの"RankA"のON/OFFを切り替えると、C1FlexGridコントロールの"POINT"列で、ルールが適用された数値のがわずかにずれます。
◎サンプルコード(VB)
Public Class Form1
Public Sub New()
' この呼び出しはデザイナーで必要です。
InitializeComponent()
Call InitRulesManager()
C1RulesManager1.SetC1RulesManager(Me.C1FlexGrid1, Me.C1RulesManager1)
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
C1FlexGrid1.Rows.Count = 6
C1FlexGrid1.Cols.Count = 2
C1FlexGrid1.Cols(1).Name = "POINT"
C1FlexGrid1(1, 1) = 20
C1FlexGrid1(2, 1) = 40
C1FlexGrid1(3, 1) = 50
C1FlexGrid1(4, 1) = 70
C1FlexGrid1(5, 1) = 80
End Sub
Private Sub InitRulesManager()
Dim objStyle As C1.Win.RulesManager.ItemStyle
objStyle = New C1.Win.RulesManager.ItemStyle()
objStyle.ForeColor = Color.Red
Dim objRule As C1.Win.RulesManager.Rule
objRule = New C1.Win.RulesManager.Rule
With objRule
.Name = "RankA"
.Expression = "= [POINT] >= 50"
.Style = objStyle
.StopIfTrue = True
End With
objRule.AppliesTo.Add(New C1.Win.RulesManager.FieldRange(New String() {"POINT"}))
Me.C1RulesManager1.Rules.Add(objRule)
End Sub
End Class
◎サンプルコード(C#)namespace prj_C1RulesManager_FlexGrid
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
InitRulesManager();
c1RulesManager1.SetC1RulesManager(c1FlexGrid1, c1RulesManager1);
}
private void Form1_Load(object sender, EventArgs e)
{
c1FlexGrid1.Rows.Count = 6;
c1FlexGrid1.Cols.Count = 2;
c1FlexGrid1.Cols[1].Name = "POINT";
c1FlexGrid1[1, 1] = 20;
c1FlexGrid1[2, 1] = 40;
c1FlexGrid1[3, 1] = 50;
c1FlexGrid1[4, 1] = 70;
c1FlexGrid1[5, 1] = 80;
}
private void InitRulesManager()
{
C1.Win.RulesManager.ItemStyle objStyle;
objStyle = new C1.Win.RulesManager.ItemStyle();
objStyle.ForeColor = Color.Red;
C1.Win.RulesManager.Rule objRule;
objRule = new C1.Win.RulesManager.Rule();
objRule.Name = "RankA";
objRule.Expression = "= [POINT] >= 50";
objRule.Style = objStyle;
objRule.StopIfTrue = true;
objRule.AppliesTo.Add(new C1.Win.RulesManager.FieldRange(new string[] {"POINT"}));
c1RulesManager1.Rules.Add(objRule);
}
}
}
回避方法
この問題は2020J v3(5.0.20203.469)で修正されました。
旧文書番号
85963