⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iclasses.pas

📁 iocopm3.04源码,一套很好的工控开发工具
💻 PAS
📖 第 1 页 / 共 4 页
字号:
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 + -