procedure TFPlot.NullPoint(X:real); begin

// Если вычисление точки дало ошибку if Bad

// Если прошлая точка тоже была недопустимой

then ABad[High(ABad)] := X

else begin // Если прошлая точка была допустимой, // то значение аргумента заносится как начальная и // конечная точка очередного диапазона SetLength(ABad,Length(ABad)+2);
ABad[High(ABad)-1] := X;
ABad[High(ABad)] := X;
// Установка флага, сообщающего о том, // что предыдущее значение аргумента недопустимое Bad := true;
end;
end;
procedure TFPlot.ACursMouseExecute(Sender: TObject);

// Включение/выключение курсора мыши

begin

ACursMouse.Checked:= not ACursMouse.Checked; if ACursMouse.Checked then begin Seriesl. Cursor := crCross;.. FCoord.Visible := true; end

else begin Seriesl.Cursor := crDefault;
if (not ACursors.Checked) then FCoord.Visible := false else begin FCoord.XLabel.Caption := •';
FCoord.YLabel.Caption := ' ';
end;
end end;
procedure TFPlot.ACursorsExecute(Sender: TObject);

// Включение/выключение курсоров графика

begin

ACursors.Checked:= not ACursors.Checked; if ACursors.Checked then begin

ACursors.Imagelndex:=4;
IndCursl:=0;
IndCurs2:=0;
SetCursor;
WriteValue;
FCoord.Visible := true;

SetFocus; // Переключение фокуса на данную форму end

else begin ACursors.Imagelndex:=3 ;
SetCursor;

if (not ACursMouse.Checked) then FCoord.Visible := false else begin

with FCoord do begin XLabel2.Caption := '';
YLabel2.Caption := •';
XLabel3.Caption := '';
YLabel3.Caption := '';
XLDelta.Caption := '•;
YLDelta.Caption := '';
end;
end;
end;
end;

procedure TFPlot.ChartlMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); // Отображение координат курсора мыши var XData, YData: double; begin

if (Seriesl.Cursor = crCross) then begin Seriesl.GetCursorValues(XData, YData);
with FCoord do begin XLabel.Caption := FloatToStrF(XData,ffGeneral,7,0);
YLabel.Caption := FloatToStrF(YData,ffGeneral,7,0);
end;
end;
end;
procedure TFPlot.SetCursor;
// Поиск координат и прорисовка курсоров графика var XPos, YPos, Pos: Longlnt;

PenMode: TPenMode; begin

with Chartl do begin PenMode := Canvas.Pen.Mode; Canvas.Pen.Color:=clBlack; Canvas.Pen.Mode := pmNotXor; XPos:=Seriesl.CalcXPos(IndCursl); YPos:=Seriesl.CalcYPos(IndCursl); Canvas.MoveTo(XPos,ChartRect.Bottom); Canvas.LineTo(XPos, ChartRect.Top); Canvas.MoveTo(ChartRect.Left, YPos); Canvas.LineTo(ChartRect.Right, YPos); Pos:=Seriesl.CalcXPos(IndCurs2); if (Pos <> XPos) then begin

Canvas.MoveTo(Pos,ChartRect.Bottom);
Canvas.LineTo(Pos, ChartRect.Top);
end;

Pos:=Seriesl.CalcYPos(IndCurs2); if (Pos <> YPos) then begin

Canvas.MoveTo(ChartRect.Left, Pos);
Canvas.LineTo(ChartRect.Right, Pos);
end;
Canvas.Pen.Mode := PenMode;
end;
end;
procedure TFPlot.WriteValue;

// Отображение координат курсоров

var XI, X2, Yl, Y2: double;

begin

XI:=Seriesl.XValue[IndCursl]; X2:=Seriesl.XValue[IndCurs2]; Yl:=Seriesl.YValue[IndCursl]; Y2:=Seriesl.YValue[IndCurs2] ; with FCoord do begin

XLabel2.Caption := FloatToStrF(XI,ffGeneral,7,0);
YLabel2.Caption := FloatToStrF(Yl,ffGeneral,7,0);

⇐ Предыдущая страница| |Следующая страница ⇒

Приемы программирования в Delphi на основе VCL



Новости за месяц

  • Февраль
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс