作成日: 2021/02/02 最終更新日: 2021/02/02
文書種別
使用方法
詳細
チャートビューで前ページ、次ページにスクロールするには、C1GanttViewのScrollPositionプロパティを利用します。
まず、チャートビューで内部的に使用されているFlexGridの表示幅を日数に変換し、チャートビューの表示範囲の日数を算出します。
前ページにスクロールするには、表示範囲の開始日から表示範囲日数を引いて、ScrollPositionに設定します。
次ページにスクロールするには、表示範囲の開始日に表示範囲日数を足して、ScrollPositionに設定します。
◎サンプルコード(VB)
まず、チャートビューで内部的に使用されているFlexGridの表示幅を日数に変換し、チャートビューの表示範囲の日数を算出します。
前ページにスクロールするには、表示範囲の開始日から表示範囲日数を引いて、ScrollPositionに設定します。
次ページにスクロールするには、表示範囲の開始日に表示範囲日数を足して、ScrollPositionに設定します。
◎サンプルコード(VB)
Imports C1.Win.C1GanttView
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' タスクの作成
C1GanttView1.Tasks.Clear()
Dim tsk As C1.Win.C1GanttView.Task
Dim i As Integer = 0
For i = 0 To 10
tsk = New C1.Win.C1GanttView.Task
tsk.Name = ("タスクNo." + (i + 1).ToString)
tsk.Start = DateTime.Today.AddDays(i * 7)
tsk.Finish = DateTime.Today.AddDays(i * 7 + 5)
C1GanttView1.Tasks.Add(tsk)
Next
End Sub
Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click
C1GanttView1.ScrollPosition = New TaskDatePoint(C1GanttView1.ScrollPosition.Task, GetPreviousStartDate())
End Sub
Private Sub button2_Click(sender As Object, e As EventArgs) Handles button2.Click
C1GanttView1.ScrollPosition = New TaskDatePoint(C1GanttView1.ScrollPosition.Task, GetNextStartDate())
End Sub
Private Function GetPreviousStartDate() As DateTime
Dim chartView = CType(C1GanttView1.Controls(0), C1.Win.C1FlexGrid.C1FlexGrid)
Dim totalScroll As Double = chartView.Cols(0).WidthDisplay
Dim totalMinutes As Double = C1GanttView1.ChartFinishDate.Value.Subtract(C1GanttView1.ChartStartDate.Value).TotalMinutes
Dim scrollPerMinute = totalScroll / totalMinutes
Dim minutes = chartView.DisplayRectangle.Width / scrollPerMinute
Return C1GanttView1.ScrollPosition.Date.AddMinutes(minutes * -1)
End Function
Private Function GetNextStartDate() As DateTime
Dim chartView = CType(C1GanttView1.Controls(0), C1.Win.C1FlexGrid.C1FlexGrid)
Dim totalScroll As Double = chartView.Cols(0).WidthDisplay
Dim totalMinutes As Double = C1GanttView1.ChartFinishDate.Value.Subtract(C1GanttView1.ChartStartDate.Value).TotalMinutes
Dim scrollPerMinute = totalScroll / totalMinutes
Dim minutes = chartView.DisplayRectangle.Width / scrollPerMinute
Return C1GanttView1.ScrollPosition.Date.AddMinutes(minutes)
End Function
End Class
◎サンプルコード(C#)using C1.Win.C1GanttView;
namespace prj_C1GanttView_Scroll
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
c1GanttView1.Tasks.Clear();
// タスクの作成
C1.Win.C1GanttView.Task tsk;
for (int i = 0; i <= 10; i++)
{
tsk = new C1.Win.C1GanttView.Task();
tsk.Name = ("タスクNo." + (i + 1).ToString());
tsk.Start = DateTime.Today.AddDays(i * 7);
tsk.Finish = DateTime.Today.AddDays(i * 7 + 5);
c1GanttView1.Tasks.Add(tsk);
}
}
private void button1_Click(object sender, EventArgs e)
{
c1GanttView1.ScrollPosition = new TaskDatePoint(c1GanttView1.ScrollPosition.Task, GetPreviousStartDate());
}
private void button2_Click(object sender, EventArgs e)
{
c1GanttView1.ScrollPosition = new TaskDatePoint(c1GanttView1.ScrollPosition.Task, GetNextStartDate());
}
private DateTime GetPreviousStartDate()
{
var chartView = c1GanttView1.Controls[0] as C1.Win.C1FlexGrid.C1FlexGrid;
double totalScroll = chartView.Cols[0].WidthDisplay;
double totalMinutes = c1GanttView1.ChartFinishDate.Value.Subtract(c1GanttView1.ChartStartDate.Value).TotalMinutes;
var scrollPerMinute = totalScroll / totalMinutes;
var minutes = chartView.DisplayRectangle.Width / scrollPerMinute;
return (c1GanttView1.ScrollPosition.Date.AddMinutes(-minutes));
}
private DateTime GetNextStartDate()
{
var chartView = c1GanttView1.Controls[0] as C1.Win.C1FlexGrid.C1FlexGrid;
double totalScroll = chartView.Cols[0].WidthDisplay;
double totalMinutes = c1GanttView1.ChartFinishDate.Value.Subtract(c1GanttView1.ChartStartDate.Value).TotalMinutes;
var scrollPerMinute = totalScroll / totalMinutes;
var minutes = chartView.DisplayRectangle.Width / scrollPerMinute;
return (c1GanttView1.ScrollPosition.Date.AddMinutes(minutes));
}
}
}
旧文書番号
86377