📄 iclasses.pas
字号:
destructor TiStripChartContinuousDataChannelObject.Destroy;
begin
FDataList.Free;
inherited;
end;
//*************************************************************************************************************************************
procedure TiStripChartContinuousDataChannelObject.DataAdd(Value: Double);
var
DataNull : TDataNull;
begin
DataNull.Data := Value;
DataNull.Status := icdsNull;
FDataList.Add(DataNull);
end;
//*************************************************************************************************************************************
procedure TiStripChartContinuousDataChannelObject.DataClear;
begin
FDataList.Clear;
end;
//*************************************************************************************************************************************
procedure TiStripChartContinuousDataChannelObject.SetBufferSize(Value: Integer);
begin
FDataList.UseRingBuffer := False;
FDataList.SetCapacity(Value);
end;
//*************************************************************************************************************************************
procedure TiStripChartContinuousDataChannelObject.SetRingBufferSize(Value: Integer);
begin
FDataList.UseRingBuffer := True;
FDataList.SetCapacity(Value);
end;
//*************************************************************************************************************************************
function TiStripChartContinuousDataChannelObject.GetDataStatus(Index: Integer): TiChannelDataSatus;
var
DataNull : TDataNull;
begin
DataNull := FDataList.Item[Index];
Result := DataNull.Status;
end;
//*************************************************************************************************************************************
procedure TiStripChartContinuousDataChannelObject.DataDeleteRange(Value: Integer);
begin
FDataList.DeleteRange(Value);
end;
//*************************************************************************************************************************************
function TiStripChartContinuousDataChannelObject.GetDataItem(Index: Integer; var IsNull : Boolean): Double;
var
DataNull : TDataNull;
begin
DataNull := FDataList.Item[Index];
Result := DataNull.Data;
IsNull := False;
end;
//*************************************************************************************************************************************
procedure TiStripChartContinuousDataChannelObject.SetDataItem(Index: Integer; const Value: Double; const Status: TiChannelDataSatus);
var
DataNull : TDataNull;
begin
if Status = icdsNull then Exit;
DataNull := FDataList.Item[Index];
DataNull.Data := Value;
DataNull.Status := Status;
FDataList.Item[Index] := DataNull;
if Index > HighestIndex then HighestIndex := Index;
end;
//*************************************************************************************************************************************
//*************************************************************************************************************************************
{ TiStripChartDiscontinuousDataChannelObject }
//*************************************************************************************************************************************
//*************************************************************************************************************************************
constructor TiStripChartDiscontinuousDataChannelObject.Create;
begin
inherited;
FDataList := TiDataNullList.Create;
end;
//*************************************************************************************************************************************
destructor TiStripChartDiscontinuousDataChannelObject.Destroy;
begin
inherited;
DataClear;
FDataList.Free;
inherited;
end;
//*************************************************************************************************************************************
procedure TiStripChartDiscontinuousDataChannelObject.DataAdd(Value: Double);
var
DataNull : TDataNull;
ItemDropped : Boolean;
begin
DataNull.Data := Value;
DataNull.Status := icdsNull;
ItemDropped := FDataList.Add(DataNull);
if ItemDropped then HighestIndex := HighestIndex-1;
end;
//*************************************************************************************************************************************
procedure TiStripChartDiscontinuousDataChannelObject.DataClear;
begin
FDataList.Clear;
end;
//*************************************************************************************************************************************
procedure TiStripChartDiscontinuousDataChannelObject.SetBufferSize(Value: Integer);
begin
FDataList.UseRingBuffer := False;
FDataList.SetCapacity(Value);
end;
//*************************************************************************************************************************************
procedure TiStripChartDiscontinuousDataChannelObject.SetRingBufferSize(Value: Integer);
begin
FDataList.UseRingBuffer := True;
FDataList.SetCapacity(Value);
end;
//*************************************************************************************************************************************
function TiStripChartDiscontinuousDataChannelObject.GetDataStatus(Index: Integer): TiChannelDataSatus;
var
DataNull : TDataNull;
begin
DataNull := FDataList.Item[Index];
Result := DataNull.Status;
end;
//*************************************************************************************************************************************
procedure TiStripChartDiscontinuousDataChannelObject.DataDeleteRange(Value: Integer);
begin
FDataList.DeleteRange(Value);
end;
//*************************************************************************************************************************************
function TiStripChartDiscontinuousDataChannelObject.GetDataItem(Index: Integer; var IsNull: Boolean): Double;
var
DataNull : TDataNull;
begin
DataNull := FDataList.Item[Index];
Result := DataNull.Data;
IsNull := DataNull.Status = icdsNull;
end;
//*************************************************************************************************************************************
procedure TiStripChartDiscontinuousDataChannelObject.SetDataItem(Index: Integer; const Value: Double; const Status: TiChannelDataSatus);
var
DataNull : TDataNull;
begin
DataNull := FDataList.Item[Index];
DataNull.Data := Value;
DataNull.Status := Status;
FDataList.Item[Index] := DataNull;
if Index > HighestIndex then HighestIndex := Index;
end;
//*************************************************************************************************************************************
{ TiLabelChannelObject }
//*************************************************************************************************************************************
constructor TiLabelChannelObject.Create;
begin
Font := TFont.Create;
Font.Color := clWhite;
Font.Style := [fsBold];
YPosition := 50;
LabelList := TStringList.Create;
Visible := True;
end;
//*************************************************************************************************************************************
destructor TiLabelChannelObject.Destroy;
begin
inherited;
Font.Free;
LabelList.Free;
end;
//****************************************************************************************************************************************************
//****************************************************************************************************************************************************
//****************************************************************************************************************************************************
constructor TiButton.Create;
begin
FEnabled := True;
FVisible := True;
FFont := TFont.Create; FFont.OnChange := FontChange;
end;
//*************************************************************************************************************************************
destructor TiButton.Destroy;
begin
FFont.Free;
inherited;
end;
//*************************************************************************************************************************************
procedure TiButton.FontChange(Sender: TObject);
begin
Invalidate;
end;
//****************************************************************************************************************************************************
procedure TiButton.SetDrawRect(const Value: TRect);
begin
if (Left <> Value.Left) or (Top <> Value.Top) or (Right <> Value.Right) or (Bottom <> Value.Bottom) then
begin
Left := Value.Left;
Top := Value.Top;
Right := Value.Right;
Bottom := Value.Bottom;
Invalidate;
end;
end;
//*************************************************************************************************************************************
procedure TiButton.SetCaption(const Value: String);
begin
if FCaption <> Value then
begin
FCaption := Value;
Invalidate;
end;
end;
//*************************************************************************************************************************************
procedure TiButton.SetEnabled(const Value: Boolean);
begin
if FEnabled <> Value then
begin
FEnabled := Value;
Invalidate;
end;
end;
//*************************************************************************************************************************************
procedure TiButton.SetVisible(const Value: Boolean);
begin
if FVisible <> Value then
begin
FVisible := Value;
Invalidate;
end;
end;
//*************************************************************************************************************************************
procedure TiButton.SetFont(const Value: TFont);
begin
FFont.Assign(Value);
end;
//****************************************************************************************************************************************************
function TiButton.GetDrawRect: TRect;
begin
Result := Rect(Left, Top, Right, Bottom)
end;
//****************************************************************************************************************************************************
function TiButton.GetHeight: Integer;
begin
Result := FBottom - FTop;
end;
//****************************************************************************************************************************************************
function TiButton.GetWidth: Integer;
begin
Result := FRight - FLeft;
end;
//****************************************************************************************************************************************************
procedure TiButton.iMouseDown(Button: TMouseButton; Shift: TShiftState; X, Y, ScreenX, ScreenY: Integer);
begin
if not FEnabled then Exit;
MouseDown := True;
end;
//****************************************************************************************************************************************************
procedure TiButton.iMouseMove(Shift: TShiftState; X, Y, ScreenX, ScreenY: Integer);
begin
if not FEnabled then Exit;
end;
//****************************************************************************************************************************************************
procedure TiButton.iMouseUp(Button: TMouseButton; Shift: TShiftState; X, Y, ScreenX, ScreenY: Integer);
begin
if not FEnabled then Exit;
MouseDown := False;
if PtInRect(DrawRect, Point(X, Y)) then DoChange;
end;
//*************************************************************************************************************************************
procedure TiButton.DoChange;
begin
if Assigned(FOnClick) then FOnClick(Self);
end;
//****************************************************************************************************************************************************
procedure TiButton.Invalidate;
begin
if Assigned(FOnInvalidate) then FOnInvalidate(Self);
end;
//****************************************************************************************************************************************************
procedure TiButton.SetMouseDown(const Value: Boolean);
begin
if FMouseDown <> Value then
begin
FMouseDown := Value;
Invalidate;
end;
end;
//*************************************************************************************************************************************
procedure TiButton.Draw(const Canvas: TCanvas);
var
ARect : TRect;
AText : String;
AFlags : TiTextFlags;
begin
with Canvas do
begin
ARect := DrawRect;
if MouseDown then iDrawEdge(Canvas, ARect, idesSunken)
else iDrawEdge(Canvas, ARect, idesRaised);
Font.Assign(FFont);
Brush.Style := bsClear;
AFlags := [itfHCenter, itfVCenter, itfSingleLine];
AText := FCaption;
iDrawText(Canvas, AText, ARect, AFlags);
end;
end;
//*************************************************************************************************************************************
{ TiMinMaxPoint }
//*************************************************************************************************************************************
constructor TiMinMaxPoint.Create;
begin
Empty := True;
IsNull := True;
YMax := -1E301;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -