2017-02-07 10 views
-1

현재 여러 라인 시리즈가있는 DBChart가 있습니다. 각 레코드의 날짜 - 시간을 x 축에 표시합니다.Delphi 및 Teechart - X 축 런타임에서 날짜 시간을 변경합니다.

지금, 필요한 것은 런타임의 날짜 - 시간을 변경하는 것입니다. 기본적으로 처음 기록 된 날짜 - 시간은 0.0hrs입니다. 여기

내가 무엇을 의미하는지 몇 가지 예 :

  1. 2017년 1월 5일 8시 0분 0초는 = 포인트 축 X
  2. 2017년 1월 5일 8시 30분 0초에 0.0hrs를 표시해야합니다 = 축에 0.5 시간이 표시되어야 함 X
  3. 2017-01-05 09:00:00 = 축에 1.0hrs가 표시되어야 함 X
  4. 2017-01-05 09:30:00 = 1.5 시간이 표시되어야 함 축에 X
  5. 2017-01-05 10:00:00 = 축에 2.0hrs가 표시되어야 함 X
  6. 2017년 1월 5일 10시 30분 0초 = 포인트는

기본적으로 차트 쇼가 무슨 일이 ............ 축에 하 2.5 X

  • ETC를 표시해야합니다 시간이 시작되고 데이터베이스에서 내 값을 기록하는 사이. 녹음 시작부터 시간이 얼마나 걸려야 하는지를 아는 것이 더 중요합니다.

    그래서 DBchart에 함수 나 다른 방법이 있습니까? 당신의 도움

    당신은 차이를 계산하고 표시하는 OnGetAxisLabel 이벤트를 사용할 수 있습니다
  • 답변

    0

    에 대한

    감사합니다. 즉 :

    var startDate: TDateTime; 
    
    procedure TForm1.FormCreate(Sender: TObject); 
    var i: Integer; 
    begin 
        Series1.FillSampleValues(10); 
    
        startDate:=StrToDateTime('08/02/2017 10:00:00'); 
    
        Series1.XValue[0]:=startDate; 
        for i:=1 to Series1.Count-1 do 
        Series1.XValue[i]:=Series1.XValue[i-1]+Round(random*10)*DateTimeStep[dtTenMinutes]; 
    end; 
    
    procedure TForm1.Chart1GetAxisLabel(Sender: TChartAxis; Series: TChartSeries; 
        ValueIndex: Integer; var LabelText: string); 
    var tmpDate: TDateTime; 
    begin 
        if (Sender = Chart1.Axes.Bottom) then 
        begin 
        tmpDate:=StrToDateTime(LabelText); 
        tmpDate:=tmpDate-startDate; 
        LabelText:=FormatDateTime('hh:mm:ss', tmpDate); 
        end; 
    end; 
    
    +0

    답변 해 주셔서 감사합니다. 차트가 여러 날에 기록 될 수 있기 때문에 조금만 수정해야했습니다. 그래서 formatdatetime이 나를 위해 작동하지 않을 것입니다. 이제는 0.0hrs에서 첫 번째 레코드를 표시 할 수 있습니까? 지금은 아래쪽 차트에 -0.5, 0.5, 1.5, 2.5 등이 표시됩니다. 0hrs, 1hrs, 2hrs 등을 표시하는 것이 좋습니다. 기본적으로, 어떤 레코드를 맨 아래 축을 표시하는 데 사용해야하는지 차트에 알릴 수 있습니까? 바로 지금, 그것을 자동으로하고 있습니다. – Carl