📄 igaugecomponent.pas
字号:
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 + -