亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qiodometer.pas

?? Iocomp Ultra Pack v3.0.2 Sources.For.Delphi 數據顯示編程插件,可用于工業控制
?? PAS
字號:
{*******************************************************}
{                                                       }
{       TiOdometer Component                            }
{                                                       }
{       Copyright (c) 1997,2003 Iocomp Software         }
{                                                       }
{*******************************************************}
{$I iInclude.inc}

{$ifdef iVCL}unit  iOdometer;{$endif}
{$ifdef iCLX}unit QiOdometer;{$endif}

interface

uses
  {$I iIncludeUses.inc}
  {$IFDEF iVCL} iTypes,  iGPFunctions,  iMath,  iCustomComponent;{$ENDIF}
  {$IFDEF iCLX}QiTypes, QiGPFunctions, QiMath, QiCustomComponent;{$ENDIF}

type
  TiOdometer = class(TiCustomComponent)
  private
    FAutoSize              : Boolean;
    FDigitsCount           : Integer;
    FDigitWidth            : Integer;
    FDigitFont             : TFont;
    FValue                 : Double;
    FDigitBackGroundColor  : TColor;
    FShowTenths            : Boolean;
    FTenthsBackGroundColor : TColor;
    FTenthsFont            : TFont;
    FBorderMargin          : Integer;
    FOnChange              : TNotifyEvent;
    FOnAutoSize            : TNotifyEvent;
    FDigitBorderShow       : Boolean;
    FDigitBorderColor      : TColor;
    FTenthsDigitCount      : Integer;
    FShowDecimalPoint      : Boolean;
  protected
    procedure iSetAutoSize            (const Value: Boolean);
    procedure SetDigitFont            (const Value: TFont);
    procedure SetDigitsCount          (const Value: Integer);
    procedure SetDigitWidth           (const Value: Integer);
    procedure SetValue                (const Value: Double);
    procedure SetDigitBackGroundColor (const Value: TColor);
    procedure SetShowTenths           (const Value: Boolean);
    procedure SetTenthsBackGroundColor(const Value: TColor);
    procedure SetTenthsFont           (const Value: TFont);
    procedure SetBorderMargin         (const Value: Integer);
    procedure SetDigitBorderColor     (const Value: TColor);
    procedure SetDigitBorderShow      (const Value: Boolean);
    procedure SetTenthsDigitCount     (const Value: Integer);
    procedure SetShowDecimalPoint     (const Value: Boolean);

    procedure DoChange;
    procedure DoAutoSize;

    procedure iPaintTo(Canvas: TCanvas);     override;
  public
    constructor Create(AOwner: TComponent);  override;
    destructor  Destroy;                     override;
    procedure   SetValueNoEvent(const Value: Double);
    property OnAutoSize            : TNotifyEvent read FOnAutoSize            write FOnAutoSize;
  published
    property AutoSize              : Boolean      read FAutoSize              write iSetAutoSize             default True;
    property DigitsCount           : Integer      read FDigitsCount           write SetDigitsCount           default 5;
    property DigitFont             : TFont        read FDigitFont             write SetDigitFont;
    property DigitWidth            : Integer      read FDigitWidth            write SetDigitWidth            default 15;
    property DigitBackGroundColor  : TColor       read FDigitBackGroundColor  write SetDigitBackGroundColor  default clBlack;
    property DigitBorderShow       : Boolean      read FDigitBorderShow       write SetDigitBorderShow       default True;
    property DigitBorderColor      : TColor       read FDigitBorderColor      write SetDigitBorderColor      default clWhite;
    property ShowTenths            : Boolean      read FShowTenths            write SetShowTenths            default True;
    property ShowDecimalPoint      : Boolean      read FShowDecimalPoint      write SetShowDecimalPoint      default False;
    property TenthsBackGroundColor : TColor       read FTenthsBackGroundColor write SetTenthsBackGroundColor default clTeal;
    property TenthsFont            : TFont        read FTenthsFont            write SetTenthsFont;
    property TenthsDigitCount      : Integer      read FTenthsDigitCount      write SetTenthsDigitCount      default 1;
    property Value                 : Double       read FValue                 write SetValue;
    property BorderMargin          : Integer      read FBorderMargin          write SetBorderMargin          default 2;
    property OnChange              : TNotifyEvent read FOnChange              write FOnChange;
    property BorderStyle;
    property Transparent;
    property BackGroundColor;
    property Width            default 81;
    property Height           default 23;
  end;

implementation
//****************************************************************************************************************************************************
constructor TiOdometer.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  Width        := 81;
  Height       := 23;

  FDigitsCount           := 5;
  FDigitWidth            := 15;
  FBorderMargin          := 2;
  FShowTenths            := True;
  FAutoSize              := True;
  FDigitBorderShow       := True;
  FDigitBorderColor      := clWhite;
  FDigitBackGroundColor  := clBlack;
  FTenthsBackGroundColor := clTeal;
  FTenthsDigitCount      := 1;

  FDigitFont   := TFont.Create; FDigitFont.OnChange  := BackGroundChangeEvent;
  FTenthsFont  := TFont.Create; FTenthsFont.OnChange := BackGroundChangeEvent;

  FDigitFont.Color  := clWhite;
  FTenthsFont.Color := clWhite;
  FDigitFont.Style  := [fsBold];
  FTenthsFont.Style := [fsBold];
end;
//****************************************************************************************************************************************************
destructor TiOdometer.Destroy;
begin
  FDigitFont.Free;
  FTenthsFont.Free;
  inherited;
end;
//****************************************************************************************************************************************************
procedure TiOdometer.DoChange;
begin
  if Assigned(OnChangeProtected) then OnChangeProtected(Self, 'Value');
  if Assigned(FOnChange) then FOnChange(Self);
end;
//****************************************************************************************************************************************************
procedure TiOdometer.SetDigitBackGroundColor (const Value:TColor );begin SetColorProperty  (Value,FDigitBackGroundColor, irtBackGround);end;
procedure TiOdometer.SetTenthsBackGroundColor(const Value:TColor );begin SetColorProperty  (Value,FTenthsBackGroundColor,irtBackGround);end;
procedure TiOdometer.SetDigitBorderColor     (const Value:TColor );begin SetColorProperty  (Value,FDigitBorderColor,     irtBackGround);end;
procedure TiOdometer.SetDigitBorderShow      (const Value:Boolean);begin SetBooleanProperty(Value,FDigitBorderShow,      irtBackGround);end;
procedure TiOdometer.SetTenthsDigitCount     (const Value:Integer);begin SetIntegerProperty(Value,FTenthsDigitCount,     irtBackGround);end;
procedure TiOdometer.SetShowDecimalPoint     (const Value:Boolean);begin SetBooleanProperty(Value,FShowDecimalPoint,     irtBackGround);end;
//****************************************************************************************************************************************************
procedure TiOdometer.SetDigitFont (const Value: TFont);begin FDigitFont.Assign(Value);end;
procedure TiOdometer.SetTenthsFont(const Value: TFont);begin FTenthsFont.Assign(Value);end;
//****************************************************************************************************************************************************
procedure TiOdometer.DoAutoSize;
begin
  if FAutoSize and not Loading then
    begin
      Width := FDigitWidth * FDigitsCount + 2*FBorderMargin;
      if Assigned(FOnAutoSize) then FOnAutoSize(Self);
    end;
end;
//****************************************************************************************************************************************************
procedure TiOdometer.iSetAutoSize(const Value: Boolean);
begin
  if FAutoSize <> Value then
    begin
      FAutoSize := Value;
      DoAutoSize;
      BackGroundChange;
    end;
end;
//****************************************************************************************************************************************************
procedure TiOdometer.SetValueNoEvent(const Value: Double);
var
  TempOnValueChange : TNotifyEvent;
begin
  TempOnValueChange := FOnChange;
  FOnChange:= nil;
  try
    SetValue(Value);
  finally
    FOnChange := TempOnValueChange;
  end;
end;
//****************************************************************************************************************************************************
procedure TiOdometer.SetValue(const Value: Double);
var
  TempValue : Double;
  CanEdit   : Boolean;
begin
  TempValue := Value;
  if TempValue < 0 then TempValue := 0;

  if FValue <> TempValue then
    begin
      CanEdit := True;
      if Assigned(OnRequestEditProtected) then OnRequestEditProtected(Self, 'Value', CanEdit);
      if CanEdit then
        begin
          FValue := TempValue;
          BackGroundChange;
          DoChange;
        end;
    end;
end;
//****************************************************************************************************************************************************
procedure TiOdometer.SetDigitsCount(const Value: Integer);
begin
  if FDigitsCount <> Value then
    begin
      FDigitsCount := Value;
      if FDigitsCount < 1 then FDigitsCount := 1;
      DoAutoSize;
      BackGroundChange;
    end;
end;
//****************************************************************************************************************************************************
procedure TiOdometer.SetDigitWidth(const Value: Integer);
begin
  if FDigitWidth <> Value then
    begin
      FDigitWidth := Value;
      DoAutoSize;
      BackGroundChange;
    end;
end;
//****************************************************************************************************************************************************
procedure TiOdometer.SetShowTenths(const Value: Boolean);
begin
  if FShowTenths <> Value then
    begin
      FShowTenths := Value;
      DoAutoSize;
      BackGroundChange;
    end;
end;
//****************************************************************************************************************************************************
procedure TiOdometer.SetBorderMargin(const Value: Integer);
begin
  if FBorderMargin <> Value then
    begin
      FBorderMargin := Value;
      DoAutoSize;
      BackGroundChange;
    end;
end;
//****************************************************************************************************************************************************
procedure TiOdometer.iPaintTo(Canvas: TCanvas);
var
  x                : Integer;
  DigitRect        : TRect;
  ATextRect        : TRect;
  ALeft            : Integer;
  CenterY          : Integer;
  ATextHeight      : Integer;
  DigitValue       : Integer;
  TenthsOffset     : Integer;
  PreviousRotating : Boolean;
  RotationPercent  : Double;
  DisplayChar      : String;
  NextChar         : String;
  PrevChar         : String;
  AText            : String;
begin
  with Canvas, ATextRect do
    begin
      DrawBackGround(Canvas, BackGroundColor);

      ALeft := Width - FBorderMargin;

      PreviousRotating := True;

      if FShowTenths then TenthsOffset := FTenthsDigitCount else TenthsOffset := 0;

      AText := Format('%.' + IntToStr(TenthsOffset) + 'd', [Trunc(ABS(FValue*Power(10, TenthsOffset)))]);

      RotationPercent := (FValue * Power(10, TenthsOffset) - StrToFloat(AText));

      while Length(AText) < FDigitsCount do
        AText := '0' + AText;

      for x := 1 to FDigitsCount do
        begin
          DigitRect  := Rect(ALeft - FDigitWidth, 0 , ALeft, Height);
          if FShowTenths and (x <= FTenthsDigitCount) then
            begin
              Pen.Color   := FTenthsBackGroundColor;
              Brush.Color := FTenthsBackGroundColor;
              Font.Assign(FTenthsFont);
            end
          else
            begin
              Pen.Color   := FDigitBackGroundColor;
              Brush.Color := FDigitBackGroundColor;
              Font.Assign(FDigitFont);
            end;

          ATextHeight := TextHeight('0');

          Brush.Style := bsSolid;
          Rectangle(DigitRect.Left, 0, DigitRect.Right, Height);

          DisplayChar := Copy(AText, Length(AText) - x + 1, 1);
          DigitValue  := strToInt(DisplayChar);

          if DigitValue = 9 then NextChar := '0' else NextChar := IntToStr(DigitValue + 1);
          if DigitValue = 0 then PrevChar := '9' else PrevChar := IntToStr(DigitValue - 1);

          CenterY := (DigitRect.Top + DigitRect.Bottom) div 2;

          if PreviousRotating then CenterY := CenterY - Round(ATextHeight * RotationPercent);

          Brush.Style := bsClear;
          ATextRect := DigitRect;
          TextOut((Left + Right) div 2 - TextWidth(DisplayChar) div 2, CenterY - TextHeight(DisplayChar) div 2, DisplayChar);

          ATextRect := Rect(DigitRect.Left, CenterY-ATextHeight, DigitRect.Right, CenterY-ATextHeight);
          TextOut((Left + Right) div 2 - TextWidth(PrevChar) div 2, (Top + Bottom) div 2 - TextHeight(PrevChar) div 2, PrevChar);

          ATextRect := Rect(DigitRect.Left, CenterY+ATextHeight, DigitRect.Right, CenterY+ATextHeight);
          TextOut((Left + Right) div 2 - TextWidth(NextChar) div 2, (Top + Bottom) div 2 - TextHeight(NextChar) div 2, NextChar);

          if FDigitBorderShow then
            begin
              Brush.Style := bsClear;
              Pen.Style   := psSolid;
              Pen.Color   := FDigitBorderColor;
              Rectangle(DigitRect.Left, DigitRect.Top, DigitRect.Right, DigitRect.Bottom);
            end;


          if DigitValue <> 9 then PreviousRotating := False;
          ALeft := ALeft - FDigitWidth;
        end;
        
        if FShowDecimalPoint and FShowTenths and (FTenthsDigitCount > 0) then
          begin
            Font.Assign(FDigitFont);
            ALeft := Width - FBorderMargin - FDigitWidth * FTenthsDigitCount;
            ATextRect := Rect(ALeft, DigitRect.Top, ALeft, DigitRect.Bottom);
            TextOut((Left + Right) div 2 - TextWidth('.') div 2, (Top + Bottom) div 2 - TextHeight('.') div 2, '.');
          end;
    end;
    DrawBorder(Canvas);
end;
//****************************************************************************************************************************************************
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲色图综合| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美成人精精品一区二区频| 亚洲欧洲日韩一区二区三区| 日韩电影在线免费| 972aa.com艺术欧美| 欧美tickle裸体挠脚心vk| 亚洲美女在线一区| 成人在线视频首页| 精品久久久网站| 日韩精品一级二级| 在线欧美日韩精品| 国产精品久久久久久久岛一牛影视| 免费日韩伦理电影| 欧美日本在线播放| 亚洲精品国产第一综合99久久 | 亚洲欧美日韩人成在线播放| 久久爱www久久做| 欧美精品自拍偷拍动漫精品| 亚洲精品自拍动漫在线| 国产v综合v亚洲欧| 久久九九久久九九| 韩日av一区二区| 日韩精品一区二区三区中文不卡| 午夜精品成人在线视频| 在线免费观看视频一区| 椎名由奈av一区二区三区| www.亚洲激情.com| 国产精品美日韩| 风间由美一区二区av101| 久久久久9999亚洲精品| 国产剧情一区二区三区| 久久亚洲免费视频| 国产综合色视频| 久久色在线观看| 国产最新精品免费| 久久久久免费观看| 国产精品中文字幕一区二区三区| 精品欧美一区二区久久| 精品亚洲国产成人av制服丝袜| 欧美夫妻性生活| 美腿丝袜亚洲三区| 精品福利在线导航| 国产成人在线视频网站| 国产欧美精品一区二区色综合| 国产精品夜夜爽| 国产精品高潮呻吟久久| 99久久99久久综合| 亚洲精品国产第一综合99久久 | 国产乱人伦精品一区二区在线观看| 欧美久久高跟鞋激| 三级一区在线视频先锋| 在线播放中文一区| 蜜桃久久久久久| 欧美大片一区二区| 国产一区欧美日韩| 国产精品午夜在线观看| 99久久婷婷国产精品综合| 一区二区三区四区在线播放| 精品视频一区二区三区免费| 午夜精品久久久久久不卡8050| 9191久久久久久久久久久| 另类的小说在线视频另类成人小视频在线 | 亚洲bdsm女犯bdsm网站| 91精选在线观看| 国产一区二区三区久久久| 欧美激情一区二区三区在线| 99视频精品全部免费在线| 亚洲黄色免费网站| 91精品国产91久久久久久最新毛片| 久久成人久久爱| 亚洲欧洲av在线| 欧美日本在线看| 精品午夜一区二区三区在线观看| 国产欧美日韩另类视频免费观看 | 蜜桃视频一区二区| 国产蜜臀av在线一区二区三区| 一本一道久久a久久精品| 午夜视频在线观看一区| 精品国产乱码久久| 97精品国产97久久久久久久久久久久| 亚洲影视资源网| 日韩亚洲欧美一区| 成人国产精品免费观看动漫| 亚洲一区二区欧美日韩 | 91在线视频免费观看| 午夜免费欧美电影| 久久久久久久久久美女| 日本道色综合久久| 久久精品久久99精品久久| 国产精品久线观看视频| 欧美乱妇20p| 成人免费视频视频在线观看免费| 亚洲一级电影视频| 久久欧美中文字幕| 在线观看91视频| 国产精品一区专区| 亚洲大尺度视频在线观看| 久久亚洲综合av| 欧美视频在线不卡| 国产精品中文字幕一区二区三区| 亚洲成人午夜电影| 欧美激情一区二区三区在线| 欧美日韩精品电影| 不卡av免费在线观看| 蜜臀久久久久久久| 亚洲视频一区在线| 久久久精品日韩欧美| 欧美日韩一区二区三区在线| 丰满亚洲少妇av| 日本中文字幕一区二区视频| 最新国产精品久久精品| 欧美大度的电影原声| 在线观看国产日韩| 成人av小说网| 激情文学综合网| 性欧美疯狂xxxxbbbb| 国产精品免费人成网站| 欧美变态凌虐bdsm| 欧美日韩午夜在线视频| 99视频在线观看一区三区| 国产综合色在线| 免费看精品久久片| 亚洲高清久久久| 中文字幕日韩av资源站| 久久新电视剧免费观看| 欧美一区二区在线视频| 欧洲生活片亚洲生活在线观看| 成人午夜免费电影| 国产精品主播直播| 激情六月婷婷久久| 秋霞影院一区二区| 午夜视频一区二区| 亚洲五月六月丁香激情| 亚洲人成精品久久久久| 中文字幕一区二区日韩精品绯色| 久久这里只有精品6| 精品三级在线观看| 在线电影一区二区三区| 欧美探花视频资源| 色系网站成人免费| 99久久精品免费观看| 成人av高清在线| 国产激情视频一区二区在线观看| 久久se精品一区二区| 免费观看成人av| 日韩国产精品91| 日精品一区二区| 日韩激情av在线| 日韩和欧美的一区| 日韩精品91亚洲二区在线观看| 亚洲国产精品一区二区尤物区| 亚洲精品久久久蜜桃| 一区二区三区不卡视频在线观看| 亚洲欧洲日产国码二区| 亚洲三级免费观看| 亚洲精品国产视频| 亚洲图片欧美色图| 五月激情综合色| 麻豆免费看一区二区三区| 日本成人在线一区| 九一久久久久久| 国产一区二区三区不卡在线观看| 国产一区久久久| 国产白丝精品91爽爽久久| 成人黄色在线看| 91免费看视频| 在线观看日韩电影| 欧美一区二区三区四区久久| 欧美一区二区三区视频免费| 欧美一区二区三区爱爱| 欧美xfplay| 国产欧美日韩亚州综合| 综合久久给合久久狠狠狠97色| 亚洲欧美日韩综合aⅴ视频| 亚洲国产一区在线观看| 日韩电影免费在线观看网站| 蜜臀精品久久久久久蜜臀| 国产剧情一区二区三区| 99天天综合性| 欧美日韩一区二区不卡| 日韩精品中午字幕| 国产无一区二区| 亚洲女同ⅹxx女同tv| 性做久久久久久久久| 久久超碰97中文字幕| 不卡的av电影| 欧美群妇大交群的观看方式| 精品国产乱码久久久久久老虎 | 91精品国产综合久久精品图片 | 欧美四级电影在线观看| 日韩精品一区二区三区老鸭窝| 国产亚洲精品资源在线26u| 中文字幕日本不卡| 午夜精品福利一区二区三区蜜桃| 麻豆一区二区三| 波多野结衣在线一区| 欧美日韩国产综合草草| 久久久国产一区二区三区四区小说 | 成人欧美一区二区三区小说|