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

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

?? dbgridehimpexp.pas

?? Delphi控件源碼
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
      if Assigned(DBGridEh.OnGetFooterParams) then
        DBGridEh.OnGetFooterParams(DBGridEh, ColumnsList[i].Index, FooterNo,
            ColumnsList[i], Font, Background, Alignment, State, Value);
      WriteFooterCell(ColumnsList[i].Index, FooterNo, ColumnsList[i], Font, Background,
        Alignment, Value);
    end;
  finally
    Font.Free;
  end;
end;

procedure TDBGridEhExport.WritePrefix;
begin
end;

procedure TDBGridEhExport.WriteSuffix;
begin
end;

procedure TDBGridEhExport.WriteDataCell(Column: TColumnEh; AFont: TFont; Background: TColor);
begin
end;

procedure TDBGridEhExport.WriteFooterCell(DataCol, Row: Integer; Column: TColumnEh;
            AFont: TFont; Background: TColor; Alignment: TAlignment; Text: String);
begin
end;

procedure TDBGridEhExport.CalcFooterValues;
var i,j:Integer;
    Field:TField;
    Footer:TColumnFooterEh;
begin
  for i := 0 to DBGridEh.FooterRowCount - 1 do
    for j := 0 to ExpCols.Count - 1 do
    begin
      Footer := ExpCols[j].UsedFooter(i);
      if Footer.FieldName <> '' then
        Field := DBGridEh.DataSource.DataSet.FindField(Footer.FieldName)
      else
        Field := DBGridEh.DataSource.DataSet.FindField(ExpCols[j].FieldName);
      if Field = nil then Continue;
      case Footer.ValueType of
        fvtSum:
          if (Field.IsNull = False) then
            FooterValues[i*ExpCols.Count+j] := FooterValues[i*ExpCols.Count+j] + Field.AsFloat;
        fvtCount:
          FooterValues[i*ExpCols.Count+j] := FooterValues[i*ExpCols.Count+j] + 1;
      end;
    end;
end;

function TDBGridEhExport.GetFooterValue(Row, Col: Integer): String;
var
  FmtStr: string;
  Format: TFloatFormat;
  Digits: Integer;
  v:Variant;
  Field:TField;
begin
  Result := '';
  case ExpCols[Col].UsedFooter(Row).ValueType of
    fvtSum:
    begin
      if ExpCols[Col].UsedFooter(Row).FieldName <> '' then
        Field := DBGridEh.DataSource.DataSet.FindField(ExpCols[Col].UsedFooter(Row).FieldName)
      else
        Field := DBGridEh.DataSource.DataSet.FindField(ExpCols[Col].FieldName);
      if Field = nil then Exit;
      with Field do begin
        v := FooterValues[Row*ExpCols.Count+Col];
        case DataType of
          ftSmallint, ftInteger, ftAutoInc, ftWord:
             with Field as TIntegerField do
             begin
               FmtStr := DisplayFormat;
               if FmtStr = '' then Str(Integer(v), Result) else Result := FormatFloat(FmtStr, v);
             end;
          ftBCD:
            with Field as TBCDField do
            begin
              if EditFormat = '' then FmtStr := DisplayFormat else FmtStr := EditFormat;
              if FmtStr = '' then
              begin
                if Currency then
                begin
                  Format := ffCurrency;
                  Digits := CurrencyDecimals;
                end else
                begin
                  Format := ffGeneral;
                  Digits := 0;
                end;
                Result := CurrToStrF(v, Format, Digits);
              end else
                Result := FormatCurr(FmtStr, v);
            end;
          ftFloat,ftCurrency:
            with Field as TFloatField do
            begin
             if EditFormat = '' then FmtStr := DisplayFormat else FmtStr := EditFormat;
             if FmtStr = '' then
             begin
                if Currency then
                begin
                  Format := ffCurrency;
                  Digits := CurrencyDecimals;
                end else
                begin
                  Format := ffGeneral;
                  Digits := 0;
                end;
                 Result := FloatToStrF(v, Format, Precision, Digits);
              end else
                Result := FormatFloat(FmtStr, v);
            end;
          end;
        end;
    end;
    fvtCount: Result := FloatToStr(FooterValues[Row*ExpCols.Count+Col]);
  end;
end;


constructor TDBGridEhExport.Create;
begin
  inherited Create;
end;

{ TDBGridEhExportAsText }

procedure TDBGridEhExportAsText.WriteTitle(ColumnsList:TColumnsEhList);
var i:Integer;
    s:String;
begin
  CheckFirstRec;
  for i := 0 to ColumnsList.Count-1 do
  begin
    s := ColumnsList[i].Title.Caption;
    if i <> ColumnsList.Count-1 then
      s := s + #09;
    Stream.Write(PChar(s)^, Length(s));
  end;
end;

procedure TDBGridEhExportAsText.WriteRecord(ColumnsList:TColumnsEhList);
begin
  CheckFirstRec;
  FirstCell := True;
  inherited WriteRecord(ColumnsList);
end;

procedure TDBGridEhExportAsText.WriteFooter(ColumnsList:TColumnsEhList; FooterNo:Integer);
begin
  CheckFirstRec;
  FirstCell := True;
  inherited WriteFooter(ColumnsList,FooterNo);
end;

procedure TDBGridEhExportAsText.WritePrefix;
begin
end;

procedure TDBGridEhExportAsText.WriteSuffix;
begin
end;

procedure TDBGridEhExportAsText.ExportToStream(Stream: TStream;
  IsExportAll: Boolean);
begin
  FirstRec := True;
  inherited ExportToStream(Stream,IsExportAll);
end;

procedure TDBGridEhExportAsText.WriteDataCell(Column: TColumnEh;
  AFont: TFont; Background: TColor);
var s:String;
begin
  CheckFirstCell;
  s := Column.DisplayText;
  Stream.Write(PChar(s)^, Length(s));
end;

procedure TDBGridEhExportAsText.WriteFooterCell(DataCol, Row: Integer;
  Column: TColumnEh; AFont: TFont; Background: TColor;
  Alignment: TAlignment; Text: String);
var s:String;
begin
  CheckFirstCell;
  s := Text;
  Stream.Write(PChar(s)^, Length(s));
end;

procedure TDBGridEhExportAsText.CheckFirstCell;
var s:String;
begin
  if FirstCell = False then
  begin
    s := #09;
    Stream.Write(PChar(s)^, Length(s))
  end else
    FirstCell := False;
end;

procedure TDBGridEhExportAsText.CheckFirstRec;
var s:String;
begin
  if FirstRec = False then
  begin
    s := #13#10;
    Stream.Write(PChar(s)^, Length(s))
  end else
    FirstRec := False;
end;

{ TDBGridEhExportAsCVS }

procedure TDBGridEhExportAsCSV.CheckFirstCell;
var s:String;
begin
  if FirstCell = False then
  begin
    s := Separator;
    Stream.Write(PChar(s)^, Length(s))
  end else
    FirstCell := False;
end;

constructor TDBGridEhExportAsCSV.Create;
begin
  Separator := DBGridEhImpExpCsvSeparator;
  inherited Create;
end;

procedure TDBGridEhExportAsCSV.WriteDataCell(Column: TColumnEh;
  AFont: TFont; Background: TColor);
var s:String;
begin
  CheckFirstCell;
  s := AnsiQuotedStr(Column.DisplayText,'"');
  Stream.Write(PChar(s)^, Length(s));
end;

procedure TDBGridEhExportAsCSV.WriteFooterCell(DataCol, Row: Integer;
  Column: TColumnEh; AFont: TFont; Background: TColor;
  Alignment: TAlignment; Text: String);
var s:String;
begin
  CheckFirstCell;
  s := AnsiQuotedStr(Text,'"');
  Stream.Write(PChar(s)^, Length(s));
end;

procedure TDBGridEhExportAsCSV.WriteTitle(ColumnsList: TColumnsEhList);
var i:Integer;
    s:String;
begin
  CheckFirstRec;
  for i := 0 to ColumnsList.Count-1 do
  begin
    s := AnsiQuotedStr(ColumnsList[i].Title.Caption,'"');
    if i <> ColumnsList.Count-1 then
      s := s + Separator;
    Stream.Write(PChar(s)^, Length(s));
  end;
end;

{ Routines to convert MultiTitle in matrix (List of Lists) }

type
  TTitleExpRec = record
    Height:Integer;
    PTLeafCol:THeadTreeNode;
  end;

  PTitleExpRec = ^TTitleExpRec;
  TTitleExpArr = array[0..MaxListSize - 1] of TTitleExpRec;
  PTitleExpArr = ^TTitleExpArr;

procedure CalcSpan(
    ColumnsList:TColumnsEhList; ListOfHeadTreeNodeList:TList;
    Row,Col: Integer;
    var AColSpan:Integer; var ARowSpan:Integer
                  );
var Node:THeadTreeNode;
    i,k:Integer;
begin
  AColSpan := 1; ARowSpan := 1;
  Node := THeadTreeNode(TList(ListOfHeadTreeNodeList.Items[Row]).Items[Col]);
  if Node <> nil then
  begin
    for k := Row-1 downto 0 do
      if THeadTreeNode(TList(ListOfHeadTreeNodeList.Items[k]).Items[Col]) = Node
      then
      begin
        Inc(ARowSpan);
        TList(ListOfHeadTreeNodeList.Items[k]).Items[Col] := nil;
      end else
        Break;

    for i := Col+1 to ColumnsList.Count-1 do
      if THeadTreeNode(TList(ListOfHeadTreeNodeList.Items[Row]).Items[i]) = Node
      then
      begin
        Inc(AColSpan);
        TList(ListOfHeadTreeNodeList.Items[Row]).Items[i] := nil;
      end else
        Break;

    for k := Row-1 downto Row-ARowSpan+1 do
      for i := Col+1 to Col+AColSpan-1 do
        TList(ListOfHeadTreeNodeList.Items[k]).Items[i] := nil;
  end;
end;

procedure CreateMultiTitleMatrix(DBGridEh:TCustomDBGridEh;
                                 ColumnsList:TColumnsEhList;
                                 var FPTitleExpArr:PTitleExpArr;
                                 var ListOfHeadTreeNodeList:TList);
var i:Integer;
    NeedNextStep:Boolean;
    MinHeight:Integer;
    FHeadTreeNodeList:TList;
begin
  ListOfHeadTreeNodeList := nil;
  FPTitleExpArr := AllocMem(SizeOf(TTitleExpRec)*ColumnsList.Count);
  for i := 0 to ColumnsList.Count-1 do
  begin
    FPTitleExpArr[i].Height := DBGridEh.LeafFieldArr[ColumnsList[i].Index].FLeaf.Height;
    FPTitleExpArr[i].PTLeafCol := DBGridEh.LeafFieldArr[ColumnsList[i].Index].FLeaf;
  end;
  ListOfHeadTreeNodeList := TList.Create;
  NeedNextStep := True;
  while True do
  begin
    //search min height
    MinHeight := FPTitleExpArr[0].Height;
    for i := 1 to ColumnsList.Count-1 do
      if FPTitleExpArr[i].Height < MinHeight then
        MinHeight := FPTitleExpArr[i].Height;
    //add NodeList
    FHeadTreeNodeList := TList.Create;
    for i := 0 to ColumnsList.Count-1 do
    begin
      FHeadTreeNodeList.Add(FPTitleExpArr[i].PTLeafCol);
      if FPTitleExpArr[i].Height = MinHeight then
      begin
        if FPTitleExpArr[i].PTLeafCol.Host <> nil then
        begin
          FPTitleExpArr[i].PTLeafCol := FPTitleExpArr[i].PTLeafCol.Host;
          Inc(FPTitleExpArr[i].Height,FPTitleExpArr[i].PTLeafCol.Height);
          NeedNextStep := True;
        end;
      end;
    end;
    if not NeedNextStep then Break;
    ListOfHeadTreeNodeList.Add(FHeadTreeNodeList);
    NeedNextStep := False;
  end;
end;

{ TDBGridEhExportAsHTML }

procedure TDBGridEhExportAsHTML.Put(Text: String);
begin
  Stream.Write(PChar(Text)^, Length(Text));
end;

procedure TDBGridEhExportAsHTML.PutL(Text: String);
begin
  Put(Text + #13#10);
end;

procedure TDBGridEhExportAsHTML.WritePrefix;
var s:String;
    CellPaddingInc:String;
begin
  PutL('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">');
  PutL('<HTML>');
  PutL('<HEAD>');
  PutL('<TITLE>');
  PutL(DBGridEh.Name);
  PutL('</TITLE>');
  PutL('</HEAD>');

  s := '<TABLE ';
  if DBGridEh.Flat then CellPaddingInc := '1' else CellPaddingInc := '2';
  if DBGridEh.Options * [dgColLines,dgRowLines] <> [] then
    if DBGridEh.Ctl3D then s := s + 'BORDER=1 CELLSPACING=0 CELLPADDING=' + CellPaddingInc
    else s := s + 'BORDER=0 CELLSPACING=1 CELLPADDING=' + CellPaddingInc
  else
    s := s + 'BORDER=0 CELLSPACING=0 CELLPADDING=' + CellPaddingInc;
  s := s + ' BGCOLOR=#' + GetColor(DBGridEh.FixedColor) + #13#10;
  PutL(s);
end;

procedure TDBGridEhExportAsHTML.WriteSuffix;
begin
  PutL('</TABLE>');
  PutL('</BODY>');
  PutL('</HTML>');
end;

procedure TDBGridEhExportAsHTML.WriteTitle(ColumnsList: TColumnsEhList);
var i,k:Integer;
    FPTitleExpArr: PTitleExpArr;
    ListOfHeadTreeNodeList:TList;
    ColSpan,RowSpan:Integer;
begin
  if ColumnsList.Count = 0 then Exit;

  if DBGridEh.UseMultiTitle then
  begin
    try
      CreateMultiTitleMatrix(DBGridEh,ColumnsList,FPTitleExpArr,ListOfHeadTreeNodeList);

      for k := ListOfHeadTreeNodeList.Count-1 downto 1 do
      begin
        PutL('<TR>');
        for i := 0 to ColumnsList.Count-1 do
        begin
          if THeadTreeNode(TList(ListOfHeadTreeNodeList.Items[k]).Items[i]) <> nil then
          begin
            Put('  <TD ALIGN="CENTER"');
            CalcSpan(ColumnsList,ListOfHeadTreeNodeList,k,i,ColSpan,RowSpan);
            if ColSpan > 1 then
              Put(' COLSPAN = "' + IntToStr(ColSpan) + '"');
            if RowSpan > 1 then
              Put(' ROWSPAN = "' + IntToStr(RowSpan) + '"');
            Put('>');

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99精品久久久久久久久久久久| 日韩欧美一区在线| 欧美色综合影院| 日韩天堂在线观看| 国产精品免费看片| 一区二区欧美国产| 黑人精品欧美一区二区蜜桃| av电影天堂一区二区在线| 欧美亚洲尤物久久| 26uuu精品一区二区| 综合自拍亚洲综合图不卡区| 日本不卡一区二区| 国产99久久久精品| 在线不卡中文字幕播放| 久久午夜色播影院免费高清| 亚洲精品大片www| 国产精一区二区三区| 欧美体内she精高潮| 久久精品一区四区| 亚洲第一狼人社区| 成人黄色片在线观看| 欧美嫩在线观看| 国产精品午夜在线观看| 日韩国产精品久久久久久亚洲| 国产成人综合在线播放| 在线91免费看| 中文字幕一区免费在线观看| 蜜桃久久精品一区二区| 在线免费一区三区| 久久精品亚洲国产奇米99| 亚洲aⅴ怡春院| 91日韩在线专区| 久久久久久久久久久黄色| 亚洲国产三级在线| 99r精品视频| 日韩精品一区二区在线观看| 夜夜嗨av一区二区三区| 国产91精品免费| 日韩视频在线你懂得| 亚洲精品网站在线观看| 国产91丝袜在线播放0| 欧美日韩电影在线| 1区2区3区国产精品| 国产福利一区在线| 欧美v国产在线一区二区三区| 一区二区三区欧美日韩| 不卡区在线中文字幕| 精品第一国产综合精品aⅴ| 午夜亚洲福利老司机| 91在线精品一区二区三区| 国产午夜精品一区二区三区四区| 日本va欧美va精品| 欧美日韩另类国产亚洲欧美一级| 《视频一区视频二区| 国产精品99精品久久免费| 精品免费日韩av| 美女在线视频一区| 欧美久久一区二区| 午夜欧美在线一二页| 欧美曰成人黄网| 一区二区欧美国产| 91国偷自产一区二区使用方法| 中文字幕免费观看一区| 国产呦萝稀缺另类资源| 久久先锋影音av鲁色资源网| 精彩视频一区二区| 欧美tickling挠脚心丨vk| 日韩av在线免费观看不卡| 欧美日韩中文国产| 色av成人天堂桃色av| 国产蜜臀97一区二区三区| 国产麻豆午夜三级精品| 久久久99久久精品欧美| 国产一区二区三区精品视频| 久久精品视频一区二区三区| 国产黄色91视频| 国产精品天美传媒沈樵| 成人午夜免费视频| 国产精品国产三级国产| 99久久精品国产一区| 亚洲日本va午夜在线电影| 色综合一区二区三区| 一区二区三区日韩精品| 欧美欧美午夜aⅴ在线观看| 日本不卡在线视频| 精品国产1区二区| 国产99久久久国产精品潘金网站| 国产精品久久久久久久第一福利| 成人免费视频一区二区| 亚洲欧美在线另类| 91国偷自产一区二区开放时间| 亚洲国产综合91精品麻豆| 在线电影一区二区三区| 精品午夜一区二区三区在线观看| 欧美不卡一区二区三区四区| 国产伦理精品不卡| 亚洲欧洲日产国码二区| 欧美午夜精品一区二区三区| 日韩中文字幕91| 国产亚洲一二三区| 色综合天天在线| 天天免费综合色| 亚洲精品在线观| 成人av电影在线播放| 亚洲国产精品久久不卡毛片| 91精品午夜视频| 国产精品123区| 夜色激情一区二区| 精品久久久久久久一区二区蜜臀| 国产成人免费视频| 亚洲黄色免费电影| 日韩一区二区精品在线观看| 精品一区二区三区不卡 | 午夜不卡av免费| 精品乱人伦小说| 91香蕉视频mp4| 美日韩一区二区三区| 中文字幕亚洲区| 678五月天丁香亚洲综合网| 国产宾馆实践打屁股91| 亚洲国产精品天堂| 国产欧美日韩视频在线观看| 欧美日韩美女一区二区| 国产不卡免费视频| 日韩不卡在线观看日韩不卡视频| 中文一区一区三区高中清不卡| 欧美性一级生活| 国产不卡视频一区二区三区| 偷拍与自拍一区| 国产精品二区一区二区aⅴ污介绍| 欧美日韩高清一区二区| 成人国产电影网| 美国欧美日韩国产在线播放| 亚洲婷婷综合色高清在线| 奇米亚洲午夜久久精品| 国产欧美日韩麻豆91| 91精品国产91久久久久久最新毛片| 成人一区二区三区| 精品影视av免费| 亚洲一区二区影院| 中文字幕av一区二区三区高 | 蜜桃一区二区三区在线观看| 亚洲色图色小说| 欧美激情中文不卡| 日韩美女在线视频| 欧美日韩激情在线| eeuss鲁片一区二区三区在线观看| 免费看精品久久片| 亚洲小少妇裸体bbw| 中文字幕在线一区免费| 精品国产乱码久久久久久老虎| 欧美日韩一本到| 一本大道久久a久久综合婷婷| 国产福利一区在线| 狠狠网亚洲精品| 美女看a上一区| 婷婷开心激情综合| 亚洲一区二区影院| 亚洲欧美日韩国产手机在线 | 日本道色综合久久| 国产精品一二三| 精品在线观看免费| 毛片av中文字幕一区二区| 亚洲v中文字幕| 亚洲国产日韩综合久久精品| 日韩一区有码在线| 日韩美女精品在线| 综合在线观看色| 亚洲视频一区在线观看| 18成人在线观看| 亚洲视频一区二区在线观看| 中文字幕制服丝袜成人av| 国产女人18水真多18精品一级做| 久久免费电影网| 久久亚洲精品小早川怜子| 精品国精品国产尤物美女| 精品精品欲导航| 久久婷婷综合激情| 欧美精品一区二区三区在线播放| 日韩精品最新网址| 亚洲精品在线三区| 国产欧美一区二区三区鸳鸯浴| 国产日产欧美一区二区三区| 欧美经典一区二区| 国产精品久久久久久久裸模 | 欧美日韩一级二级| 欧美猛男gaygay网站| 欧美精品亚洲一区二区在线播放| 欧美精品精品一区| 日韩欧美在线网站| 久久久久久久综合色一本| 国产亚洲欧美中文| 中文字幕在线观看不卡| 亚洲欧美电影院| 亚洲国产一区二区三区| 日韩av中文字幕一区二区| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品香蕉一区二区三区| 成人黄色在线视频| 91福利国产精品|