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

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

?? qlrptbld.pas

?? 詳細的ERP設計資料
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
  inherited;
end;

procedure TQLDBGridReportBuilder.BuildList(Grid: TDBGrid; AutoFit: Boolean;
  ColumnHeaderBand, DetailBand, SummaryBand: TQRCustomBand;
  FieldList: TList; SummaryFields: TStrings);
const
  HorzOffset = 2;
var
  I, TitleRowCount: Integer;
  AColumn: TColumn;
  AData: TQRDBText;
  ALabel: TQRLabel;
  AExpr: TQRExpr;
  AColumnShape, ADetailShape: TQRShape;
  AWidth: Integer;
  TotalWidth: Integer;
  HadDetail: Boolean;
  HadColHead: Boolean;
  VertLines, HorzLines: Boolean;
//  TM: TTextMetric;
  CurrentLefts: array of Integer;

  function GridLineWidth: Integer;
  begin
    Result := THackDBGrid(Grid).GridLineWidth;
  end;

  procedure AddColumn(AColumn: TColumn);

    function GetColumnCount: Integer;
    var
      I: Integer;
    begin
      Result := 0;
      if AColumn.ParentColumn <> nil then
        for I := 0 to Grid.Columns.Count - 1 do
          with Grid.Columns[I] do
            if ParentColumn = AColumn.ParentColumn then
              Inc(Result);
    end;

    function GetMasterCol(ACol: TColumn; ADepth: Integer): TColumn;
    begin
      Result := ACol;
      while (Result <> nil) and (Result.Depth > ADepth) do
        Result := Result.ParentColumn;
    end;

    function GetRowCount: Integer;
    var
      I: Integer;
      MasterCol: TColumn;
    begin
      Result := 0;
      MasterCol := GetMasterCol(AColumn, 0);
      with Grid do
        for I := 0 to Columns.Count - 1 do
          if (GetMasterCol(Columns[I], 0) = MasterCol) and (Columns[I].Depth + 1 > Result) then
            Result := Columns[I].Depth + 1;
    end;

    function GetColWidth: Integer;
    var
      I: Integer;
//      MasterCol: TColumn;
    begin
      Result := 0;
      with Grid do
        for I := 0 to Columns.Count - 1 do
          if GetMasterCol(Columns[I], AColumn.Depth) = AColumn then
            Result := Result + Columns[I].Width + GridLineWidth;
    end;

    function GetIsLastColumn: Boolean;
    var
      I: Integer;
    begin
      Result := True;
      for I := AColumn.Index + 1 to Grid.Columns.Count - 1 do
        if GetMasterCol(Grid.Columns[I], AColumn.Depth) <> AColumn then
        begin
          Result := False;
          Break;
        end;
    end;

    function GetIsChildLastCol: Boolean;
    var
      MasterCol: TColumn;
      I: Integer;
    begin
      Result := False;
      MasterCol := GetMasterCol(AColumn, AColumn.Depth - 1);
      if MasterCol <> nil then
      begin
        for I := AColumn.Index + 1 to Grid.Columns.Count - 1 do
          if GetMasterCol(Grid.Columns[I], AColumn.Depth - 1) = MasterCol then
            Exit;
        Result := True;
      end;
    end;

  var
    Temp: string;
    RowCount, RowHeight, ColWidth, I: Integer;
//    ARect: TRect;
    IsLastCol: Boolean;
  begin
{$IFDEF DEBUG}
    SendDebug('-------------------------------------------');
    SendDebug('AColumn.FieldName = ' + AColumn.FieldName);
    SendInteger('AColumn.Depth', AColumn.Depth);
{$ENDIF}
//    ARect := THackDBGrid(Grid).CalcTitleRect(AColumn, AColumn.Depth, MasterCol);
    if Length(CurrentLefts) <= AColumn.Depth then SetLength(CurrentLefts, Length(CurrentLefts) + 1);
//    ColWidth := ARect.Right - ARect.Left;
    ColWidth := GetColWidth;
    RowCount := GetRowCount;
    RowHeight := ColumnHeaderBand.Height div RowCount;
//    ColCount := GetColumnCount;
    IsLastCol := GetIsLastColumn;
    AData := nil;

    ALabel := TQRLabel(ColumnHeaderBand.AddPrintable(TQRLabel));
    ALabel.Top := RowHeight * AColumn.Depth + (RowHeight - ALabel.Height) div 2;
    ALabel.AutoSize := False;
    ALabel.Font.Assign(AColumn.Title.Font);
    ALabel.Alignment := AColumn.Title.Alignment;
    if AutoFit then
    begin
      if IsLastCol  then
        AWidth := ColumnHeaderBand.Width - CurrentLefts[AColumn.Depth]
      else
        AWidth := Trunc(ColWidth / TotalWidth * ColumnHeaderBand.Width);
      ALabel.Width := AWidth - HorzOffset;
//      ALabel.Transparent := True;
    end
    else begin
//      ALabel.AutoSize := True;
//      GetTextMetrics(Grid.Canvas.Handle, TM);
//      ALabel.Caption := MakeStr('X', (ColWidth + (TM.tmAveCharWidth div 2) - TM.tmOverhang - 3)
//          div TM.tmAveCharWidth);
//      ALabel.AutoSize := False;
      ALabel.Width := ColWidth - HorzOffset;
      AWidth := ColWidth + GridLineWidth;
//      AWidth := ALabel.Width + HorzOffset;
    end;
//    ALabel.AutoSize := False;
//    ALabel.Font.Style := ALabel.Font.Style + [fsBold];
    if ALabel.Alignment = taRightJustify then
      ALabel.Left := CurrentLefts[AColumn.Depth]
    else
      ALabel.Left := CurrentLefts[AColumn.Depth] + HorzOffset;
    ALabel.Caption := AColumn.Title.Caption;
//    ALabel.Frame.DrawBottom := True;
    if HorzLines and (AColumn.Depth < RowCount - 1) then
    begin
      with TQRShape(ColumnHeaderBand.AddPrintable(TQRShape)) do
      begin
        Shape := qrsHorLine;
        Top := RowHeight * (AColumn.Depth + 1) - 1;
        Left := CurrentLefts[AColumn.Depth];
        if IsLastCol then Width := ColumnHeaderBand.Width - Left
        else Width := AWidth;
        Height := 1;
{$IFDEF DEBUG}
        SendInteger('HorzShape.Width', Width);
        SendInteger('ColumnHeaderBand.Width', ColumnHeaderBand.Width);
{$ENDIF}
      end;
//      if AutoFit then ADetailShape.Left := CurrentLeft + ALabel.Width + HorzOffset;
    end;
    if VertLines and not IsLastCol and not GetIsChildLastCol then
    begin
      AColumnShape := TQRShape(ColumnHeaderBand.AddPrintable(TQRShape));
      AColumnShape.Shape := qrsVertLine;
      if AColumn.Depth = 0 then AColumnShape.Top := 0
      else AColumnShape.Top := RowHeight * AColumn.Depth;
      AColumnShape.Width := 1;
      AColumnShape.Height := ColumnHeaderBand.Height - AColumnShape.Top;
      {if AutoFit then }AColumnShape.Left := CurrentLefts[AColumn.Depth] + AWidth - 1;
    end;
    if not AColumn.Expanded then
    begin
      AData := TQRDBText(DetailBand.AddPrintable(TQRDBText));
      AData := TQRDBText.Create(Report);
      AData.Parent := DetailBand;
      AData.AutoSize := False;
      AData.DataSet := AColumn.Field.DataSet;
      AData.DataField := AColumn.FieldName;
      if AColumn.Field.DataSet.FindField(AColumn.FieldName) = nil then
        ShowMessage('');
      AData.Top := (DetailBand.Height - AData.Height) div 2;
      AData.Width := ALabel.Width;
      AData.Alignment := AColumn.Alignment;
{$IFDEF DEBUG}
      SendDebug('AData.DataName = ''' + AData.DataField+ '''');
{$ENDIF}
  //    if AutoFit then
      if AData.Alignment = taRightJustify then
        AData.Left := CurrentLefts[AColumn.Depth]
      else AData.Left := CurrentLefts[AColumn.Depth] + HorzOffset;
      if VertLines and not IsLastCol and FHasColLines then
      begin
        ADetailShape := TQRShape(DetailBand.AddPrintable(TQRShape));
        ADetailShape.Shape := qrsVertLine;
        ADetailShape.Top := 0;//ALabel.Top;
        ADetailShape.Left := CurrentLefts[AColumn.Depth] + AWidth - 1;
        ADetailShape.Width := 1;
        ADetailShape.Height := DetailBand.Height;
  //      if AutoFit then ADetailShape.Left := CurrentLeft + ALabel.Width + HorzOffset;
      end;
    end;
    Temp := SummaryFields.Values[AColumn.FieldName];
    if Temp <> '' then
    begin
      AExpr := TQRExpr(SummaryBand.AddPrintable(TQRExpr));
      AExpr.AutoSize := False;
      AExpr.Expression := Temp;
      if IsPublishedProp(AColumn.Field, 'currency') and
        (GetOrdProp(AColumn.Field, 'currency') = 1) then
        AExpr.Mask := CurrencyString + '0.00';
      AExpr.Alignment := AData.Alignment;
      AExpr.Left := AData.Left;
      AExpr.Width := AData.Width;
      AExpr.Top := (SummaryBand.Height - AExpr.Height) div 2;
      AExpr.ResetAfterPrint := True;
    end;
    if (Temp <> '') and VertLines and not IsLastCol and FHasColLines then
    begin
      with TQRShape(SummaryBand.AddPrintable(TQRShape)) do
      begin
        Shape := qrsVertLine;
        Top := 0;
        Left := ADetailShape.Left;
        Width := 1;
        Height := SummaryBand.Height;
      end;
//      if AutoFit then ADetailShape.Left := CurrentLeft + ALabel.Width + HorzOffset;
    end;
{$IFDEF DEBUG}
    SendInteger('AWidth', AWidth);
    SendInteger('ColWidth', ColWidth);
    SendInteger('CurrentLeft', CurrentLefts[AColumn.Depth]);
    SendInteger('RowCount', RowCount);
{$ENDIF}
    if AColumn.Depth = RowCount - 1 then
      for I := Length(CurrentLefts) - 1 downto AColumn.Depth + 1 do
        CurrentLefts[I] := CurrentLefts[I] + AWidth;
    CurrentLefts[AColumn.Depth] := CurrentLefts[AColumn.Depth] + AWidth;
//    if not AColumn.Expanded then
//      CurrentLeft := CurrentLeft + AWidth;
//    else begin
      if FAutoOrientation and (AData <> nil) and (AData.Left + AData.Width > DetailBand.Width) and
        (Orientation = poPortrait) then Orientation := poLandscape;
      if (AData <> nil) and (AData.Left + AData.Width > DetailBand.Width) then
      begin
        ALabel.Free;
        AData.Free;
      end;
//    end;
  end;

begin
  TotalWidth := 0;
  for I := 0 to Grid.Columns.Count - 1 do
    if Grid.Columns[I].Visible and not Grid.Columns[I].Expanded and
      (FieldList.IndexOf(Grid.Columns[I].Field) >= 0) then
      TotalWidth := TotalWidth + Grid.Columns[I].Width + GridLineWidth;
  Font.Assign(Grid.Font);
  HadColHead := ColumnHeaderBand <> nil;
  HadDetail := DetailBand <> nil;
  if HadColHead then
    with TQRLabel(ColumnHeaderBand.AddPrintable(TQRLabel)) do
    try
      Caption := 'Wg';
      Font.Style := Font.Style + [fsBold];
      ColumnHeaderBand.Height := Round(Height * 1.5)
    finally
      Free;
    end;
  if HadDetail then
    with TQRLabel(DetailBand.AddPrintable(TQRLabel)) do
    try
      Caption := 'Wg';
      DetailBand.Height := Round(Height * 1.5)
    finally
      Free;
    end;
  VertLines := DBGrids.dgColLines in Grid.Options;
  HorzLines := DBGrids.dgRowLines in Grid.Options;
  if DBGrids.dgTitles in Grid.Options then
  begin
//    if HadColHead then
//      ColumnHeaderBand.Height := 20;
    if VertLines then
    begin
      if HadColHead then
        with ColumnHeaderBand.Frame do
        begin
          DrawLeft := True;
          DrawRight := True;
        end;
      if FHasColLines then
        with DetailBand.Frame do
        begin
          DrawLeft := True;
          DrawRight := True;
        end;
    end;
    if HorzLines then
    begin
      if HadColHead then
        with ColumnHeaderBand.Frame do
        begin
          DrawTop := True;
          DrawBottom := True;
        end;
      if FHasRowLines then
        with DetailBand.Frame do DrawBottom := True;
    end;
  end;
//  ColumnHeaderBand.Height := ColumnHeaderBand.Height * 2;
  if Grid <> nil then
  begin
//    CurrentLeft := 0;
    TitleRowCount := 0;
    with Grid do
      for I := 0 to Columns.Count - 1 do
        if Columns[I].Depth + 1 > TitleRowCount then
          TitleRowCount := Columns[I].Depth + 1;
    if ColumnHeaderBand <> nil then
      with ColumnHeaderBand do Height := Height * TitleRowCount;
    SetLength(CurrentLefts, TitleRowCount);
    for I := 0 to Grid.Columns.Count - 1 do begin
      AColumn := Grid.Columns[I];
      if AColumn.Visible and (FieldList.IndexOf(AColumn.Field) >= 0) {and not (AField.DataType in ftNonTextTypes +
        [ftUnknown]) }then AddColumn(AColumn);
    end;
  end;
  RenameObjects;
end;

procedure TQLDBGridReportBuilder.Notification(AComponent: TComponent;
  Operation: TOperation);
begin
  inherited Notification(AComponent, Operation);
  if Operation = opRemove then
    if (AComponent = Report) then Report := nil
    else if AComponent = DBGrid then DBGrid := nil
    else if AComponent = SubDetailDBGrid then SubDetailDBGrid := nil;
end;

function TQLDBGridReportBuilder.GetReport: TCustomQuickRep;
begin
  Result := inherited Report;
end;

procedure TQLDBGridReportBuilder.SetReport(const Value: TCustomQuickRep);
begin
  if Value <> Report then
  begin
//    if Report <> nil then Report.RemoveFreeNotification(Self);
    inherited Report := Value;
    if Value <> nil then Value.FreeNotification(Self);
  end;
end;

procedure TQLDBGridReportBuilder.SetDBGrid(const Value: TDBGrid);
begin
  if FDBGrid <> Value then
  begin
    FDBGrid := Value;
    if Value <> nil then Value.FreeNotification(Self);
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久99精品久久| 日韩久久久精品| 一区二区三区四区不卡在线 | 欧美96一区二区免费视频| 欧美性受极品xxxx喷水| 亚洲福利视频一区二区| 91精品国产综合久久国产大片| 午夜久久福利影院| 日韩精品专区在线| 国内精品久久久久影院薰衣草| 欧美v亚洲v综合ⅴ国产v| 国产一本一道久久香蕉| 中文字幕一区在线观看| 欧美三级三级三级爽爽爽| 男人的天堂亚洲一区| 国产日韩成人精品| 色狠狠一区二区三区香蕉| 日精品一区二区三区| 久久色中文字幕| 91黄色小视频| 久久 天天综合| 亚洲人成小说网站色在线 | 久久久精品中文字幕麻豆发布| 成人三级伦理片| 五月婷婷欧美视频| 久久久久久久久97黄色工厂| 色欧美乱欧美15图片| 蜜桃视频在线观看一区| 亚洲欧美日韩久久| 欧美成人精品高清在线播放| 成人av网站在线| 日韩精品视频网| 亚洲欧美怡红院| 精品福利视频一区二区三区| 99久久精品国产麻豆演员表| 偷拍亚洲欧洲综合| 国产日韩精品一区二区三区| 欧美福利一区二区| 99免费精品在线观看| 美女精品自拍一二三四| 亚洲精品五月天| 久久久不卡影院| 7777精品伊人久久久大香线蕉经典版下载 | 欧美性色aⅴ视频一区日韩精品| 极品美女销魂一区二区三区免费| 亚洲精品一二三| 国产欧美视频一区二区三区| 欧美伦理影视网| 久久久不卡网国产精品一区| 在线亚洲+欧美+日本专区| 国产麻豆精品在线| 肉肉av福利一精品导航| 亚洲免费在线电影| 国产三级一区二区| 日韩女优av电影在线观看| av福利精品导航| 国产一区二区剧情av在线| 免费人成精品欧美精品 | 日韩三级中文字幕| 欧美午夜不卡视频| 99久久久久久99| 成人免费视频免费观看| 国精产品一区一区三区mba视频| 天天色综合天天| 亚洲国产毛片aaaaa无费看| 一区二区三区在线视频播放 | 久久精品无码一区二区三区| 91精品国产一区二区三区蜜臀| 日韩视频一区二区三区| 一区二区在线看| 国产欧美日韩另类视频免费观看| 日韩视频中午一区| 欧美一级夜夜爽| 日韩视频免费直播| 欧美成人乱码一区二区三区| 日韩三级精品电影久久久| 欧美一区二区三区思思人| 91精品国产色综合久久ai换脸| 欧美丰满嫩嫩电影| 欧美mv日韩mv国产网站app| 欧美一级高清大全免费观看| 538在线一区二区精品国产| 91精品啪在线观看国产60岁| 欧美哺乳videos| 久久亚区不卡日本| 欧美国产成人在线| 亚洲激情图片qvod| 亚洲18女电影在线观看| 日韩不卡一区二区| 国产一区二区视频在线| 成人性生交大片免费看视频在线 | 亚洲女子a中天字幕| 一区二区三区在线视频观看58| 亚洲国产综合视频在线观看| 日韩经典中文字幕一区| 久久99在线观看| 中文字幕乱码一区二区免费| 欧美日韩一区视频| 欧美一区二区三区日韩| xfplay精品久久| 中文字幕视频一区| 香蕉乱码成人久久天堂爱免费| 日韩精品乱码av一区二区| 久久99国产乱子伦精品免费| 国产精品中文欧美| 97超碰欧美中文字幕| 欧美日韩一区不卡| 日韩精品中午字幕| 日韩美女视频一区二区| 秋霞电影一区二区| 国产麻豆91精品| 91麻豆精品一区二区三区| 精品视频999| 国产亚洲欧美一区在线观看| 国产精品青草久久| 一区二区三区欧美| 韩国毛片一区二区三区| 色老汉一区二区三区| 69精品人人人人| xnxx国产精品| 香蕉久久夜色精品国产使用方法 | 亚洲免费观看高清完整版在线观看 | 亚洲另类中文字| 日韩精品三区四区| 成人网页在线观看| 欧美日韩夫妻久久| 中文字幕高清不卡| 五月开心婷婷久久| 国产一区二区三区美女| 在线观看日韩一区| 久久久久国产精品人| 亚洲主播在线播放| 国内精品久久久久影院薰衣草 | 日韩电影免费一区| 成人a免费在线看| 欧美美女黄视频| 亚洲少妇屁股交4| 美国毛片一区二区三区| 色综合久久中文字幕综合网| 精品免费视频.| 亚洲一区二区在线免费看| 国产酒店精品激情| 欧美一级在线免费| 一区二区理论电影在线观看| 国产成人免费av在线| 欧美成人午夜电影| 午夜免费欧美电影| 色综合视频一区二区三区高清| 精品盗摄一区二区三区| 午夜欧美大尺度福利影院在线看| 麻豆精品在线视频| 99精品偷自拍| 国产欧美日韩麻豆91| 九九在线精品视频| 日韩一区二区电影| 日一区二区三区| 欧美精品一级二级三级| 一区二区三区免费在线观看| 91精品91久久久中77777| 国产精品久久久久久久久果冻传媒| 精品一区二区三区在线观看| 日韩美女天天操| 免费xxxx性欧美18vr| 欧美一区二区三区四区视频| 奇米精品一区二区三区四区| 欧美三级韩国三级日本一级| 亚洲国产精品一区二区久久 | 亚洲精品久久嫩草网站秘色| 国内外精品视频| 国产日韩欧美亚洲| 国产精品资源在线看| 国产午夜精品福利| 福利电影一区二区| 中文字幕av一区二区三区高| 成人99免费视频| 亚洲欧洲性图库| 99在线精品视频| 一区二区三区资源| 欧美视频精品在线观看| 天天综合色天天综合色h| 日韩欧美一区二区视频| 经典三级在线一区| 国产精品丝袜久久久久久app| 99视频有精品| 亚洲成av人片在www色猫咪| 日韩一区二区在线免费观看| 激情综合色综合久久综合| 久久综合精品国产一区二区三区| 国产成人av电影在线| 亚洲欧美视频在线观看视频| 欧美日韩一区二区三区四区| 免费不卡在线视频| 中文字幕av资源一区| 欧美日韩日日夜夜| 久久爱www久久做| 亚洲色图色小说| 91精品国产乱码久久蜜臀| 国产一区二区不卡老阿姨| 亚洲精品视频自拍| 日韩欧美电影一区|