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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? qipercentbar.pas

?? Iocomp Ultra Pack v3.0.2 Sources.For.Delphi 數(shù)據(jù)顯示編程插件,可用于工業(yè)控制
?? PAS
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
procedure TiPercentBar.SetItemValue(Index: Integer; const Value: Double);
var
  TempValue : Double;
begin
  if Value < 0 then TempValue := 0 else TempValue := Value;
  if (Index < 0) or (Index > FItemList.Count) then raise Exception.Create('Item Index out of Bounds');
  (FitemList.Objects[Index] as TiPercentItemObject).Value := TempValue;
  InvalidateChange;
end;
//****************************************************************************************************************************************************
procedure TiPercentBar.SetTitleHorizontalAlignment(const Value: TiTitleHorizontalAlignment);
begin
  if FTitleHorizontalAlignment <> Value then
    begin
      FTitleHorizontalAlignment := Value;
      InvalidateChange;
    end;
end;
//****************************************************************************************************************************************************
procedure TiPercentBar.DefineProperties(Filer: TFiler);
begin
  inherited DefineProperties(Filer);
  Filer.DefineProperty('Items', ReadItems, WriteItems, DoWriteItems);
end;
//****************************************************************************************************************************************************
procedure TiPercentBar.ReadItems(Reader: TReader);
var
  iPercentItemObject : TiPercentItemObject;
begin
  ClearList;
  Reader.ReadListBegin;
  while not Reader.EndOfList do
    begin
      iPercentItemObject := TiPercentItemObject.Create;
      FItemList.AddObject('', iPercentItemObject);
      iPercentItemObject.Title := Reader.ReadString;

      Reader.ReadListBegin;
      iPercentItemObject.Color := Reader.ReadInteger;
      iPercentItemObject.Value := Reader.ReadFloat;
      Reader.ReadListEnd
    end;
  Reader.ReadListEnd;
end;
//****************************************************************************************************************************************************
procedure TiPercentBar.WriteItems(Writer: TWriter);
var
  x                  : Integer;
  iPercentItemObject : TiPercentItemObject;
begin
  Writer.WriteListBegin;
  for x := 0 to FItemList.Count - 1 do
    begin
      iPercentItemObject := FItemList.Objects[x] as TiPercentItemObject;
      Writer.WriteString (iPercentItemObject.Title);
      Writer.WriteListBegin;
      Writer.WriteInteger(iPercentItemObject.Color);
      Writer.WriteFloat(iPercentItemObject.Value);
      Writer.WriteListEnd;
    end;
  Writer.WriteListEnd;
end;
//****************************************************************************************************************************************************
function TiPercentBar.DoWriteItems: Boolean;
begin
  Result := FItemList.Count <> 0;
end;
//****************************************************************************************************************************************************
procedure TiPercentBar.iPaintTo(Canvas: TCanvas);
var
  ATextString        : String;
  ATextRect          : TRect;
  AWidth             : Integer;
  YPoint             : Integer;
  x                  : Integer;
  iPercentItemObject : TiPercentItemObject;
  LegendLeft         : Integer;
  LegendRowHeight    : Integer;
  LegendHeight       : Integer;
  LegendWidth        : Integer;
  TotalValue         : Double;
  ItemPercent        : Double;
  PreviousY          : Double;
  BarCenterX         : Integer;
  BarHeight          : Integer;
  BarRect            : TRect;
  TitleHeight        : Integer;
  TitleWidth         : Integer;
  TitleCenterX       : Integer;
  MaxTitleWidth      : Integer;
  MaxValueWidth      : Integer;
  MaxPercentWidth    : Integer;
  ShowTitle          : Boolean;
begin
  with Canvas do
    begin
      DrawBackGround(Canvas, BackGroundColor);

      Font.Assign(FTitleFont);
      Brush.Style := bsSolid;
      Pen.Style   := psSolid;

      ShowTitle := Length(Trim(FTitleText)) > 0;
      if ShowTitle then TitleHeight := TextHeight('ABC') + FTitleMargin else  TitleHeight := 0;

      if FItemList.Count <> 0 then
        begin
          TotalValue      := 0;
          for x := 0 to FItemList.Count - 1 do
            TotalValue := TotalValue + (FItemList.Objects[x] as TiPercentItemObject).Value;

          MaxTitleWidth   := 0;
          MaxValueWidth   := 0;
          MaxPercentWidth := 0;

          Font.Assign(FLegendFont);
          for x := 0 to FItemList.Count - 1 do
            begin
              iPercentItemObject  := FItemList.Objects[x] as TiPercentItemObject;

              AWidth := TextWidth(Trim(iPercentItemObject.Title));
              if AWidth > MaxTitleWidth then MaxTitleWidth := AWidth;

              AWidth := TextWidth(Format('%.' + IntToStr(FLegendValuePrecision) + 'f', [iPercentItemObject.Value]));
              if AWidth > MaxValueWidth then MaxValueWidth := AWidth;

              if TotalValue = 0 then
                AWidth := TextWidth(Format('%.' + IntToStr(FLegendPercentPrecision) + 'f', [1/FItemList.Count*100]) + '%')
              else
                AWidth := TextWidth(Format('%.' + IntToStr(FLegendPercentPrecision) + 'f', [iPercentItemObject.Value/TotalValue*100]) + '%');
              if AWidth > MaxPercentWidth then MaxPercentWidth := AWidth;
            end;

          LegendWidth := 20 + FLegendMargin + MaxTitleWidth;
          if FLegendShowPercent then LegendWidth := LegendWidth + MaxPercentWidth;
          if FLegendShowValue   then LegendWidth := LegendWidth + MaxValueWidth;

          BarCenterX := (Width - LegendWidth) div 2;
          BarHeight  := Height - 2*FOuterMargin - TitleHeight;
          BarRect    := Rect(BarCenterX - FBarWidth div 2, FOuterMargin, BarCenterX + FBarWidth - FBarWidth div 2, FOuterMargin + BarHeight);

          LegendLeft      := BarCenterX + FBarWidth div 2 + FLegendMargin;
          LegendRowHeight := TextHeight('ABC');
          LegendHeight    := (FItemList.Count * LegendRowHeight);
          YPoint          := (BarRect.Top + BarRect.Bottom) div 2 - LegendHeight div 2 + LegendRowHeight div 2;
          Font.Assign(FLegendFont);
          PreviousY := BarRect.Top;

          for x := 0 to FItemList.Count - 1 do
            begin
              iPercentItemObject   := FItemList.Objects[x] as TiPercentItemObject;
              Brush.Color          := iPercentItemObject.Color;
              Brush.Style          := bsSolid;
              Pen.Color            := iPercentItemObject.Color;

              if TotalValue = 0 then ItemPercent := 1/FItemList.Count
              else                   ItemPercent := iPercentItemObject.Value / TotalValue;

              FillRect(Rect(BarRect.Left, Round(PreviousY), BarRect.Right, Round(PreviousY + ItemPercent*BarHeight)));
              PreviousY            := PreviousY + ItemPercent*BarHeight;

              Rectangle(LegendLeft + 5, Round(YPoint - 2), LegendLeft + 15, Round(YPoint + 2)); //Color Line

              Brush.Style := bsClear;

              ATextString := Trim(iPercentItemObject.Title);
              ATextRect   := Rect(LegendLeft  + 20, YPoint - LegendRowHeight div 2, Width - 5, YPoint + LegendRowHeight div 2);
              TextOut(ATextRect.Left, ATextRect.Top, ATextString);

              if FLegendShowValue then
                begin
                  ATextString      := Format('%.' + IntToStr(FLegendValuePrecision) + 'f', [iPercentItemObject.Value]);
                  ATextRect.Left   := ATextRect.Left + MaxTitleWidth + FLegendValueMargin;
                  ATextRect.Right  := ATextRect.Left + MaxValueWidth;
                  TextOut(ATextRect.Right - TextWidth(ATextString), ATextRect.Top, ATextString);
                end
              else
                begin
                  ATextRect.Left   := ATextRect.Left + MaxTitleWidth;
                  ATextRect.Right  := ATextRect.Left;
                end;

              if FLegendShowPercent then
                begin
                  if TotalValue = 0 then
                    ATextString := Format('%.' + IntToStr(FLegendPercentPrecision) + 'f', [1/FItemList.Count*100]) + '%'
                  else
                    ATextString := Format('%.' + IntToStr(FLegendPercentPrecision) + 'f', [iPercentItemObject.Value/TotalValue*100]) + '%';
                    
                  ATextRect.Left   := ATextRect.Right + FLegendPercentMargin;
                  ATextRect.Right  := ATextRect.Left + MaxPercentWidth;
                  TextOut(ATextRect.Right - TextWidth(ATextString), ATextRect.Top, ATextString);
                end;

              YPoint := YPoint + LegendRowHeight;
            end;
        end
      else
        begin
          BarCenterX     := Width  div 2;  //Required if Item Count = 0
          BarRect.Bottom := Height div 2; //Required if Item Count = 0
        end;

      if ShowTitle then
        begin
          Font.Assign(FTitleFont);
          ATextString  := Trim(FTitleText);
          TitleCenterX := BarCenterX;
          TitleWidth   := TextWidth(FTitleText);
          case FTitleHorizontalAlignment of
            ithaCenterDisplay : TitleCenterX := BarCenterX;
            ithaCenterControl : TitleCenterX := Width div 2;
          end;
          Brush.Style := bsClear;
          TextOut(TitleCenterX - TitleWidth div 2, BarRect.Bottom + FTitleMargin, ATextString);
        end;
    end;
end;
//****************************************************************************************************************************************************
{$ifdef iVCL}
function TiPercentBar.OPCNewDataSpecial(iOPCItem: TiOPCItem): Boolean;
var
  x : Integer;
begin
  Result := inherited OPCNewDataSpecial(iOPCItem);

  for x := 0 to FItemList.Count-1 do
    if UpperCase('Item(' + IntToStr(x) + ').Value') = UpperCase(iOPCItem.PropertyName) then
      begin
        Result := True;
        SetItemValue(x, iOPCItem.Data);
      end;
end;
//****************************************************************************************************************************************************
procedure TiPercentBar.UpdateOPCSpecialList;
var
  x : Integer;
begin
  if not Assigned(OPCSpecialList) then Exit;
  OPCSpecialList.Clear;
  for x := 0 to FItemList.Count-1 do
    OPCSpecialList.Add('Item(' + IntToStr(x) + ').Value');
end;
{$endif}
//****************************************************************************************************************************************************
end.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国内二区三区| 欧美大片在线观看| 黄页网站大全一区二区| 国产精品久久久久一区| 欧美精品久久久久久久多人混战| 国产69精品一区二区亚洲孕妇| 天天亚洲美女在线视频| 日韩伦理免费电影| 欧美国产禁国产网站cc| 日韩视频免费观看高清在线视频| 色悠久久久久综合欧美99| 国产精品小仙女| 日韩国产精品大片| 一区二区三区日韩| 亚洲天堂中文字幕| 国产精品水嫩水嫩| 国产视频在线观看一区二区三区 | 亚洲国产成人va在线观看天堂| 欧美精品一区二区在线观看| 91黄色免费看| 色婷婷狠狠综合| a在线播放不卡| 成人免费看的视频| 国产精品一区二区免费不卡 | 在线看一区二区| 99久久精品国产精品久久| 国产原创一区二区| 美国十次综合导航| 免费日韩伦理电影| 日韩电影网1区2区| 日本系列欧美系列| 午夜一区二区三区在线观看| 亚洲乱码国产乱码精品精的特点 | gogo大胆日本视频一区| 国产91丝袜在线观看| 国产一区91精品张津瑜| 精品一区二区三区欧美| 狠狠色丁香婷婷综合久久片| 久久电影网站中文字幕| 精品一区二区三区视频在线观看| 麻豆精品新av中文字幕| 另类的小说在线视频另类成人小视频在线 | 在线综合亚洲欧美在线视频| 欧美久久久久久久久久| 欧美精品在线观看一区二区| 欧美精品在线观看一区二区| 91精品欧美综合在线观看最新| 欧美一区二区在线播放| 日韩欧美你懂的| 久久综合色之久久综合| 久久久www成人免费毛片麻豆 | 91精品在线观看入口| 777亚洲妇女| 欧美大片拔萝卜| 久久久国产午夜精品| 国产亚洲一区二区三区在线观看| 久久久.com| 日韩美女久久久| 爽爽淫人综合网网站| 蜜桃在线一区二区三区| 国产精品一二三四五| 一本久久精品一区二区| 91麻豆精品国产91久久久 | 亚洲成人在线免费| 日本少妇一区二区| 国产成人精品免费| 91免费精品国自产拍在线不卡| 欧美日韩一区二区三区高清| 日韩一级黄色大片| 国产精品欧美综合在线| 亚洲国产另类精品专区| 国产一区二区三区视频在线播放| 成人午夜电影网站| 欧美视频一区二区三区四区| 2021久久国产精品不只是精品| 国产精品乱码妇女bbbb| 亚洲一区二区综合| 国产一区二区三区不卡在线观看| 97精品国产97久久久久久久久久久久| 欧美日韩欧美一区二区| 久久久91精品国产一区二区精品| 亚洲激情校园春色| 国产精品一品二品| 欧美日韩在线直播| 国产欧美日本一区二区三区| 一区二区在线电影| 国内精品免费**视频| 色欧美88888久久久久久影院| 日韩精品一区二区三区蜜臀| 亚洲精品乱码久久久久久黑人| 另类小说欧美激情| 欧美自拍偷拍一区| 国产精品丝袜久久久久久app| 丝袜亚洲另类欧美| zzijzzij亚洲日本少妇熟睡| 日韩一卡二卡三卡四卡| 一区二区三区日韩精品| 国产白丝网站精品污在线入口| 欧美日韩一区不卡| 国产精品第13页| 国产在线精品不卡| 欧美一区二区三区在线观看| 亚洲免费三区一区二区| 国产原创一区二区| 日韩欧美专区在线| 亚洲地区一二三色| 91蜜桃免费观看视频| 国产视频一区二区在线| 美日韩一级片在线观看| 精品视频免费看| 夜夜操天天操亚洲| 99久久婷婷国产综合精品电影| 精品国产乱码久久久久久1区2区| 同产精品九九九| 色综合久久88色综合天天6| 亚洲国产精品高清| 国产麻豆日韩欧美久久| 欧美一区二区三区四区在线观看| 亚洲精品成人在线| 97se亚洲国产综合自在线不卡| 日本一区二区久久| 国产精品一区二区久久不卡| 欧美精品一区视频| 狠狠v欧美v日韩v亚洲ⅴ| 欧美剧在线免费观看网站| 亚洲一级在线观看| 欧美中文字幕一区二区三区| 亚洲激情自拍偷拍| 欧美这里有精品| 亚洲午夜av在线| 欧美在线你懂得| 亚洲国产另类av| 欧美二区乱c少妇| 天天色天天操综合| 日韩三级伦理片妻子的秘密按摩| 青娱乐精品视频| 亚洲精品一区二区三区影院| 久久国产精品色婷婷| 久久久五月婷婷| 国产不卡在线一区| 亚洲婷婷综合久久一本伊一区| 色素色在线综合| 亚洲成人黄色影院| 制服丝袜在线91| 精品综合久久久久久8888| 久久久亚洲欧洲日产国码αv| 国产成人在线网站| 国产精品久久久久久久久图文区| 成人av午夜影院| 亚洲综合男人的天堂| 91.xcao| 国产在线精品不卡| 中文字幕中文字幕在线一区 | 日韩高清在线不卡| 日韩视频在线永久播放| 国产成人在线观看| 亚洲人精品一区| 欧美裸体一区二区三区| 美日韩一级片在线观看| 国产日韩高清在线| 91一区二区在线| 午夜精品影院在线观看| 欧美成人video| 成人免费视频视频| 亚洲一区二区三区国产| 日韩一级在线观看| 成人免费毛片a| 午夜精品久久一牛影视| 亚洲精品在线免费观看视频| 成a人片亚洲日本久久| 午夜精品福利在线| 久久午夜国产精品| 欧美专区日韩专区| 国产一区二区在线观看免费| 亚洲激情在线播放| 久久综合色之久久综合| 色欧美88888久久久久久影院| 美女爽到高潮91| 亚洲欧美在线高清| 日韩三级精品电影久久久| caoporm超碰国产精品| 蜜臀va亚洲va欧美va天堂| 中文字幕免费不卡在线| 91麻豆精品国产91久久久久久| 国产高清精品久久久久| 亚洲成a人v欧美综合天堂| 中文字幕av不卡| 日韩欧美一二三四区| 色综合久久久久久久| 国产一区二区0| 日韩精品亚洲专区| 中文字幕一区免费在线观看| 91精品国产91久久综合桃花| 91在线视频网址| 国产伦精品一区二区三区免费 | 午夜欧美大尺度福利影院在线看| 国产亚洲精品aa| 欧美一区二区观看视频| 91丨九色丨黑人外教| 国产乱子轮精品视频|