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

📄 igaugecomponent.pas

📁 iocopm3.04源码,一套很好的工控开发工具
💻 PAS
📖 第 1 页 / 共 2 页
字号:

  Filer.DefineProperty('Pointers', FPointerManager.ReadFromStream, FPointerManager.WriteToStream, FPointerManager.DoWriteToStream);
end;
//****************************************************************************************************************************************************
procedure TiGaugeComponent.ReadSectionEnd1(Reader: TReader);begin FSectionEnd1 := Reader.ReadFloat;end;
procedure TiGaugeComponent.ReadSectionEnd2(Reader: TReader);begin FSectionEnd2 := Reader.ReadFloat;end;
//****************************************************************************************************************************************************
procedure TiGaugeComponent.WriteSectionEnd1(Writer: TWriter);begin Writer.WriteFloat(FSectionEnd1);end;
procedure TiGaugeComponent.WriteSectionEnd2(Writer: TWriter);begin Writer.WriteFloat(FSectionEnd2);end;
//****************************************************************************************************************************************************
procedure TiGaugeComponent.ChangeEvent(Sender: Tobject);
begin
  InvalidateChange;
end;
//****************************************************************************************************************************************************
procedure TiGaugeComponent.InsertEvent(Sender: Tobject);
begin
  if Sender is TiGaugePointer then InitializePointer(Sender as TiGaugePointer);
  InvalidateChange;
end;
//****************************************************************************************************************************************************
procedure TiGaugeComponent.RemoveEvent(Sender: Tobject);
begin
  InvalidateChange;
end;
//****************************************************************************************************************************************************
function TiGaugeComponent.GetPointers(Index: Integer): TiGaugePointer;
begin
  Result := FPointerManager.Items[Index];
end;
//****************************************************************************************************************************************************
function TiGaugeComponent.AddPointer: Integer;
begin
  Result := FPointerManager.Add;
end;
//****************************************************************************************************************************************************
procedure TiGaugeComponent.DeletePointer(Index: Integer);
begin
  if Index = 0 then raise Exception.Create('Pointer Index 0 can not be Deleted');
  FPointerManager.Delete(Index);
end;
//****************************************************************************************************************************************************
function TiGaugeComponent.GetPointerCount: Integer;
begin
  Result := FPointerManager.Count;
end;
//****************************************************************************************************************************************************
procedure TiGaugeComponent.RemoveAllPointers;
begin
  while FPointerManager.Count > 1 do
    FPointerManager.Delete(1);
end;
//****************************************************************************************************************************************************
function TiGaugeComponent.GetPointersVisible (Index: Integer): Boolean;begin Result := FPointerManager.Items[Index].Visible; end;
function TiGaugeComponent.GetPointersPosition(Index: Integer): Double; begin Result := FPointerManager.Items[Index].Position;end;
function TiGaugeComponent.GetPointersSize    (Index: Integer): Integer;begin Result := FPointerManager.Items[Index].Size;    end;
function TiGaugeComponent.GetPointersColor   (Index: Integer): TColor; begin Result := FPointerManager.Items[Index].Color;   end;
//****************************************************************************************************************************************************
procedure TiGaugeComponent.SetPointersVisible (Index: Integer; Value: Boolean);begin FPointerManager.Items[Index].Visible  := Value;end;
procedure TiGaugeComponent.SetPointersSize    (Index, Value: Integer         );begin FPointerManager.Items[Index].Size     := Value;end;
procedure TiGaugeComponent.SetPointersColor   (Index: Integer; Value: TColor );begin FPointerManager.Items[Index].Color    := Value;end;
//****************************************************************************************************************************************************
function TiGaugeComponent.GetPosition: Double;
begin
  Result := FPointerManager.Items[0].Position;
end;
//****************************************************************************************************************************************************
procedure TiGaugeComponent.SetPointersPosition(Index: Integer; Value: Double);
begin
  FPointerManager.Items[Index].Position := Value;

  if Value > CurrentMax then if not MinMaxFixed then CurrentMax := Value;
  if Value < CurrentMin then if not MinMaxFixed then CurrentMin := Value;

  if Value > CurrentMax then DoPositionOverMax;
  if Value < CurrentMin then DoPositionUnderMin;
end;
//****************************************************************************************************************************************************
procedure TiGaugeComponent.SetPosition(const Value: Double);
var
  x         : Integer;
  TempValue : Double;
begin
  if Loading then
    begin
      FPointerManager.Items[0].Position := Value;
      Exit;
    end;

  TempValue := Value;

  if TempValue > PositionMax then TempValue := PositionMax;
  if TempValue < PositionMin then TempValue := PositionMin;

  if FPointerManager.Items[0].Position <> TempValue then
    begin
      FPointerManager.Items[0].Position := TempValue;

      if TempValue > CurrentMax then if not MinMaxFixed then CurrentMax := TempValue;
      if TempValue < CurrentMin then if not MinMaxFixed then CurrentMin := TempValue;

      if TempValue > CurrentMax then DoPositionOverMax;
      if TempValue < CurrentMin then DoPositionUnderMin;

      for x := 0 to LimitCount - 1 do
        begin
          if Value > LimitUpperValue[x] then DoPositionOverLimit(x);
          if Value < LimitLowerValue[x] then DoPositionUnderLimit(x);
        end;
      DoPositionChange;
    end;
end;
//****************************************************************************************************************************************************
procedure TiGaugeComponent.DoPointerBounds;
var
  x : Integer;
begin
  for x := 0 to FPointerManager.Count - 1 do
    begin
      if FPointerManager.Items[x].Position < PositionMin then FPointerManager.Items[x].Position := PositionMin;
      if FPointerManager.Items[x].Position > PositionMax then FPointerManager.Items[x].Position := PositionMax;
    end;
end;
//****************************************************************************************************************************************************
{$ifdef iVCL}
procedure TiGaugeComponent.UpdateOPCSpecialList;
var
  x : Integer;
begin
  if not Assigned(OPCSpecialList) then Exit;
  OPCSpecialList.Clear;
  for x := 0 to PointerManager.Count-1 do
    OPCSpecialList.Add('Pointers(' + IntToStr(x) + ').Position');
end;
//****************************************************************************************************************************************************
function TiGaugeComponent.OPCNewDataSpecial(iOPCItem: TiOPCItem): Boolean;
var
  x : Integer;
begin
  Result := inherited OPCNewDataSpecial(iOPCItem);

  for x := 0 to PointerManager.Count-1 do
    if UpperCase('Pointers(' + IntToStr(x) + ').Position') = UpperCase(iOPCItem.PropertyName) then
      begin
        Result := True;
        SetPointersPosition(x, iOPCItem.Data);
        DoPositionChange;
      end;
end;
{$endif}
//****************************************************************************************************************************************************
procedure TiGaugeComponent.InitializePointer(iGaugePointer: TiGaugePointer);
begin

end;
//****************************************************************************************************************************************************
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -