Y坐标是数值
X坐标是时间,请教如何取得当前鼠标(移动)位置的时间数值
本人自己作了一个算法时间老差一两天:
fmax:=DBChart2.BottomAxis.Maximum;
fmin:=DBChart2.BottomAxis.Minimum;
//每个Y坐标量
cstm:=(fmax-fmin)/(dbchart2.ChartRect.Right-dbchart2.ChartRect.left)*(x-dbchart2.ChartRect.left);
{ tmp_dy:=inttostr(1900+(trunc(fmin+cstm) div 365))+'-'+intTostr((trunc(fmin+cstm)mod 365) div 30)+
'-'+intTostr(4+(Trunc(fmin+cstm)mod 365) mod 30);
DecodeDate(STRtODATE(tmp_dy), Yr, Mnth, Day);} maxdys:=monthdays[isleapyear(1900+(trunc(fmin+cstm) div 365)),(trunc(fmin+cstm)mod 365) div 30];//日期
if (4+(Trunc(fmin+cstm)mod 365) mod 30)>maxdys then
lbval.Caption:='时间:'+intTostr(1+(trunc(fmin+cstm)mod 365) div 30)+'-'+intTostr(4+(Trunc(fmin+cstm)mod 365) mod 30-maxdys)
else
lbval.Caption:='时间:'+intTostr((trunc(fmin+cstm)mod 365) div 30)+'-'+intTostr(4+(Trunc(fmin+cstm)mod 365) mod 30);//时间
if trunc(60*(strTofloat(Format('%0.1f',[((fmin+cstm)-Trunc(fmin+cstm))*24]))-trunc((fmin+cstm-Trunc(fmin+cstm))*24)))>=60 then
lbval.Caption:=lbval.Caption+' '+Format('%0.0f',[1+((fmin+cstm)-Trunc(fmin+cstm))*24])+':00 '//+intTOstr(trunc(60*(strTofloat(Format('%0.1f',[((fmin+cstm)-Trunc(fmin+cstm))*24]))-trunc((fmin+cstm-Trunc(fmin+cstm))*24))))
else
lbval.Caption:=lbval.Caption+' '+Format('%0.0f',[((fmin+cstm)-Trunc(fmin+cstm))*24])+
':'+intTOstr(trunc(60*(strTofloat(Format('%0.1f',[((fmin+cstm)-Trunc(fmin+cstm))*24]))-trunc((fmin+cstm-Trunc(fmin+cstm))*24))))+' ';
X坐标是时间,请教如何取得当前鼠标(移动)位置的时间数值
本人自己作了一个算法时间老差一两天:
fmax:=DBChart2.BottomAxis.Maximum;
fmin:=DBChart2.BottomAxis.Minimum;
//每个Y坐标量
cstm:=(fmax-fmin)/(dbchart2.ChartRect.Right-dbchart2.ChartRect.left)*(x-dbchart2.ChartRect.left);
{ tmp_dy:=inttostr(1900+(trunc(fmin+cstm) div 365))+'-'+intTostr((trunc(fmin+cstm)mod 365) div 30)+
'-'+intTostr(4+(Trunc(fmin+cstm)mod 365) mod 30);
DecodeDate(STRtODATE(tmp_dy), Yr, Mnth, Day);} maxdys:=monthdays[isleapyear(1900+(trunc(fmin+cstm) div 365)),(trunc(fmin+cstm)mod 365) div 30];//日期
if (4+(Trunc(fmin+cstm)mod 365) mod 30)>maxdys then
lbval.Caption:='时间:'+intTostr(1+(trunc(fmin+cstm)mod 365) div 30)+'-'+intTostr(4+(Trunc(fmin+cstm)mod 365) mod 30-maxdys)
else
lbval.Caption:='时间:'+intTostr((trunc(fmin+cstm)mod 365) div 30)+'-'+intTostr(4+(Trunc(fmin+cstm)mod 365) mod 30);//时间
if trunc(60*(strTofloat(Format('%0.1f',[((fmin+cstm)-Trunc(fmin+cstm))*24]))-trunc((fmin+cstm-Trunc(fmin+cstm))*24)))>=60 then
lbval.Caption:=lbval.Caption+' '+Format('%0.0f',[1+((fmin+cstm)-Trunc(fmin+cstm))*24])+':00 '//+intTOstr(trunc(60*(strTofloat(Format('%0.1f',[((fmin+cstm)-Trunc(fmin+cstm))*24]))-trunc((fmin+cstm-Trunc(fmin+cstm))*24))))
else
lbval.Caption:=lbval.Caption+' '+Format('%0.0f',[((fmin+cstm)-Trunc(fmin+cstm))*24])+
':'+intTOstr(trunc(60*(strTofloat(Format('%0.1f',[((fmin+cstm)-Trunc(fmin+cstm))*24]))-trunc((fmin+cstm-Trunc(fmin+cstm))*24))))+' ';
//Y坐标是数值
AChart.Axis.Left.Labels.FormattedValue(AChart.Series(t).YScreenToValue(Y));
//X坐标是时间
AChart.Axis.Bottom.Labels.FormattedValue(AChart.Series(t).XScreenToValue(X));}