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

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

?? flatexcel.pas

?? comerose_flatstyle_v4.42.9.0_d7.rar
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
    FCells.BeginLayout;
    try
      Clear;
      AddFields(FCells.DataSource.DataSet.Fields, 0);
    finally
      FCells.EndLayout;
    end
  end
  else
    Clear;
end;

procedure TEduceDatas.SaveToFile(const Filename: string);
var
  S: TStream;
begin
  S := TFileStream.Create(Filename, fmCreate);
  try
    SaveToStream(S);
  finally
    S.Free;
  end;
end;

procedure TEduceDatas.SaveToStream(S: TStream);
var
  Wrapper: TEduceWrapper;
begin
  Wrapper := TEduceWrapper.Create(nil);
  try
    Wrapper.Columns := Self;
    S.WriteComponent(Wrapper);
  finally
    Wrapper.Free;
  end;
end;

procedure TEduceDatas.SetColumn(Index: Integer; Value: TEduceData);
begin
  Items[Index].Assign(Value);
end;

procedure TEduceDatas.SetState(NewState: TEduceDatasState);
begin
  if NewState = State then Exit;
  if NewState = csDefault then
     Clear
  else
     RebuildColumns;
end;

function TEduceDatas.InternalAdd: TEduceData;
begin
  Result := Add;
  Result.FStored := False;
end;

function TEduceDatas.GetState: TEduceDatasState;
begin
  Result := TEduceDatasState((Count > 0) and Items[0].IsStored);
end;

procedure TEduceDatas.Update(Item: TCollectionItem);
begin
  if (FCells = nil) or (csLoading in FCells.ComponentState) then Exit;
  if Item = nil then
  begin
    FCells.LayoutChanged;
  end;
end;

{ TDefineExcel }

var
  ExcelBof    : array[0..5] of Word = ($809,  8, 0, $10,   0, 0);
  ExcelEof    : array[0..1] of Word = ($0A,  00);
  ExcelLabel  : array[0..5] of Word = ($204,  0, 0,   0,   0, 0);
  ExcelNum    : array[0..4] of Word = ($203, 14, 0,   0,   0);
  ExcelRec    : array[0..4] of Word = ($27E, 10, 0,   0,   0);
  ExcelBlank  : array[0..4] of Word = ($201,  6, 0,   0, $17);

Constructor TDefineExcel.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 FColumns      := CreateColumns;
 FDatalink     := CreateDatalink;
 FEduceType    := dmDefault;
 FEduceTitle   := true;
 FInterval     := 500;
 FShowProgress := true;
 FFileName     := '未命名表格文件';
 FEduceMode    := emSingle;
 FDefaultExt   := '.xls';
end;

destructor TDefineExcel.Destroy;
begin
  FColumns.Free;
  FColumns := nil;
  FDataLink.Free;
  FDataLink := nil;
  inherited Destroy;
end;

function TDefineExcel.CreateColumns: TEduceDatas;
begin
  Result := TEduceDatas.Create(Self, TEduceData);
end;

procedure TDefineExcel.IncColRow;
begin
 if fCol = EduceCount - 1 then
 begin
    Inc(fRow);
    fCol :=0;
 end else
    Inc(fCol);
end;
//寫空單元
procedure TDefineExcel.WriteBlankCell;
begin
 ExcelBlank[2] := fRow;
 ExcelBlank[3] := fCol;
 ExcelStream.WriteBuffer(ExcelBlank, SizeOf(ExcelBlank));
 IncColRow;
end;
//寫浮點單元
procedure TDefineExcel.WriteFloatCell(const AValue: Double);
begin
 ExcelNum[2] := fRow;
 ExcelNum[3] := fCol;
 ExcelStream.WriteBuffer(ExcelNum, SizeOf(ExcelNum));
 ExcelStream.WriteBuffer(AValue, 8);
 IncColRow;
end;
//寫整數單元
procedure TDefineExcel.WriteIntegerCell(const AValue: Integer);
var V: Integer;
begin
 ExcelRec[2] := fRow;
 ExcelRec[3] := fCol;
 ExcelStream.WriteBuffer(ExcelRec, SizeOf(ExcelRec));
 V := (AValue shl 2) or 2;
 ExcelStream.WriteBuffer(V, 4);
 IncColRow;
end;
//寫字符單元
procedure TDefineExcel.WriteStringCell(const AValue: string);
var
 L: Word;
begin
 L := Length(AValue);
 ExcelLabel[1] := 8 + L;
 ExcelLabel[2] := fRow;
 ExcelLabel[3] := fCol;
 ExcelLabel[5] := L;
 ExcelStream.WriteBuffer(ExcelLabel, SizeOf(ExcelLabel));
 ExcelStream.WriteBuffer(Pointer(AValue)^, L);
 IncColRow;
end;
//寫前綴
procedure TDefineExcel.WritePrefix;
begin
 ExcelStream.WriteBuffer(ExcelBof, SizeOf(ExcelBof));
end;
//寫后綴
procedure TDefineExcel.WriteSuffix;
begin
 ExcelStream.WriteBuffer(ExcelEof, SizeOf(ExcelEof));
end;
//寫標題
procedure TDefineExcel.WriteTitle;
var n: word;
begin
if FEduceTitle then
begin
 for n:= 0 to FColumns.Count - 1 do
 begin
   if FColumns[n].Visible then WriteStringCell(FColumns[n].Caption);
 end;
end;
end;

procedure TDefineExcel.StartProgress(Max:Integer);
begin
 if (not Assigned(FExcelForm))and(FShowProgress) then
    Application.CreateForm(TExcelForm, FExcelForm);
 if Assigned(FExcelForm) then
 begin
  with FExcelForm do
  begin
    ProGauge.Max     :=Max;
    ProGauge.Min     :=0;
    ProGauge.Progress:=0;
    Show;
    BringToFront;
  end;
 end;
end;

procedure TDefineExcel.EndProgress;
begin
 if Assigned(FExcelForm) then
 begin
  with FExcelForm do
  begin
    ProGauge.Progress := ProGauge.Progress+1;
    if ProGauge.Progress >= ProGauge.Max then
    begin
       Sleep(FInterval);
       Close;
    end;
  end;
  Application.ProcessMessages;
 end;
end;

procedure TDefineExcel.WriteData(Field:TField);
begin
   if Field.IsNull then
      WriteBlankCell
   else
   case FEduceType of
       dmDefault:
             case Field.DataType of
               ftSmallint,
               ftInteger,
               ftWord,
               ftAutoInc,
               ftBytes: WriteIntegerCell(Field.AsInteger);
               ftFloat,
               ftCurrency,
               ftBCD: WriteFloatCell(Field.AsFloat);
             else
               WriteStringCell(Field.AsString);
             end;
       dmString:WriteStringCell(Field.AsString);
   end;
end;
//正式寫入Excel表的數據
procedure TDefineExcel.WriteDataCells;
var n: word;
    fBookMark : TBookmark;
begin
 //寫入 Excel 文件開始格式
 WritePrefix;
 //寫入標題名稱
 WriteTitle;
 //開始寫入各字段數據
 with FDataLink.DataSet do
 begin
  //禁止在數據感知控件中顯示
  DisableControls;
  //初始化處理進度
  StartProgress(RecordCount);
  //記錄當記錄的位置
  fBookMark := GetBookmark;
  //指向第一條記錄
  First;
  while not Eof do begin
   for n := 0 to ColumnCount - 1 do
   begin
    case FEduceMode of
     emSingle:
     begin
      if FColumns[n].Visible then
         WriteData(FColumns[n].Field);
     end;
     emDefault:
     begin
         WriteData(FColumns[n].Field);
     end;
    end;
   end;
   EndProgress;
   Next;
  end;
  //還原處理前的記錄位置
  GotoBookmark(fBookMark);
  //充許在數據感知控件中顯示
  EnableControls;
 end;
 //寫入 Excel 文件結束標識
 WriteSuffix;
end;

procedure TDefineExcel.SaveExcel(Save: TStream);
begin
  fCol    := 0;
  fRow    := 0;
  ExcelStream := Save;
  WriteDataCells;
end;

procedure TDefineExcel.DefineFieldMap;
var
  I: Integer;
begin
  if FColumns.State = csCustomized then
  begin
    FDataLink.SparseMap := True;
    for I := 0 to FColumns.Count-1 do
      FDataLink.AddMapping(FColumns[I].FieldName);
  end
  else
  begin
    FDataLink.SparseMap := False;
    with FDataLink.Dataset do
      for I := 0 to FieldList.Count - 1 do
        with FieldList[I] do if Visible then FDataLink.AddMapping(FullName);
  end;
end;

procedure TDefineExcel.InitColumns;

  function FieldIsMapped(F: TField): Boolean;
  var
    X: Integer;
  begin
    Result := False;
    if F = nil then Exit;
    for X := 0 to FDataLink.FieldCount-1 do
      if FDataLink.Fields[X] = F then
      begin
        Result := True;
        Exit;
      end;
  end;

  procedure CheckForPassthroughs;  // check for Columns.State flip-flop
  var
    SeenPassthrough: Boolean;
    I, J: Integer;
    Column: TEduceData;
  begin
    SeenPassthrough := False;
    for I := 0 to FColumns.Count-1 do
      if not FColumns[I].IsStored then
        SeenPassthrough := True
      else if SeenPassthrough then
      begin
        for J := FColumns.Count-1 downto 0 do
        begin
          Column := FColumns[J];
          if not Column.IsStored then
            Column.Free;
        end;
        Exit;
      end;
  end;

  procedure ResetColumnFieldBindings;
  var
    I, J, K: Integer;
    Fld: TField;
    Column: TEduceData;
  begin
    if FColumns.State = csDefault then
    begin
      if (not FDataLink.Active) and (FDataLink.DefaultFields) then
          FColumns.Clear
      else
      begin
        for J := FColumns.Count-1 downto 0 do
        begin
          with FColumns[J] do
          begin
           if not Assigned(Field) or not FieldIsMapped(Field) then
              Free;
          end;
        end;
      end;
      I := FDataLink.FieldCount;
      //if (I = 0) and (FColumns.Count = 0) then
      //    Inc(I);
      for J := 0 to I-1 do
      begin
        Fld := FDataLink.Fields[J];
        if Assigned(Fld) then
        begin
          K := J;
          while (K < FColumns.Count) and (FColumns[K].Field <> Fld) do
            Inc(K);
          if K < FColumns.Count then
             Column := FColumns[K]
          else
          begin
             Column := FColumns.InternalAdd;
             Column.Field := Fld;
          end;
        end
        else
          Column := FColumns.InternalAdd;
        Column.Index := J;
      end;
    end
    else
    begin
      for I := 0 to FColumns.Count-1 do
          FColumns[I].Field := nil;
    end;
  end;
begin
  if ([csLoading, csDestroying] * ComponentState) <> [] then
     Exit;
  CheckForPassthroughs;
  FDatalink.ClearMapping;
  if FDatalink.Active then
     DefineFieldMap;
  ResetColumnFieldBindings;
end;

procedure TDefineExcel.SeTEduceType(const Value: TEduceType);
begin
 if FEduceType <> Value then
    FEduceType := Value;
end;

procedure TDefineExcel.SetColumns(const Value: TEduceDatas);
begin
  FColumns.Assign(Value);
end;

procedure TDefineExcel.DefineProperties(Filer: TFiler);
var
  StoreIt: Boolean;
  vState: TEduceDatasState;
begin

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久99免费| 免费视频一区二区| 欧美aa在线视频| 国产精品原创巨作av| 在线观看视频一区二区欧美日韩| 日韩久久久久久| 亚洲麻豆国产自偷在线| 国产一区二区精品久久99| 色www精品视频在线观看| 国产婷婷色一区二区三区| 秋霞国产午夜精品免费视频| 97精品久久久久中文字幕 | 亚洲人亚洲人成电影网站色| 美女视频一区二区三区| 色综合久久久久久久久久久| 久久婷婷成人综合色| 日本午夜精品视频在线观看 | 亚洲色图一区二区三区| 国产乱子伦一区二区三区国色天香| 欧美视频在线观看一区| 椎名由奈av一区二区三区| 国产精品综合视频| 精品国产免费一区二区三区四区| 午夜视频一区二区三区| 91丨九色丨尤物| 国产精品黄色在线观看| 国产99一区视频免费| 久久亚洲精精品中文字幕早川悠里 | av在线免费不卡| 久久一区二区三区四区| 国产曰批免费观看久久久| 91精品国产丝袜白色高跟鞋| 亚洲成av人片观看| 欧美性做爰猛烈叫床潮| 亚洲一级二级三级在线免费观看| 91视视频在线观看入口直接观看www| 国产精品欧美久久久久无广告| 国产一区不卡在线| 久久亚洲影视婷婷| 丰满白嫩尤物一区二区| 国产精品成人一区二区艾草| 成人18视频日本| 亚洲欧美视频一区| 91行情网站电视在线观看高清版| 一区二区在线看| 欧美伦理影视网| 理论片日本一区| 久久天堂av综合合色蜜桃网| 懂色av一区二区夜夜嗨| 一区在线播放视频| 欧洲精品一区二区三区在线观看| 亚洲v日本v欧美v久久精品| 91精品国产高清一区二区三区蜜臀| 蜜臀av一区二区在线观看| 久久众筹精品私拍模特| 99久久精品免费精品国产| 亚洲午夜私人影院| 91精品国产色综合久久| 国产乱子伦视频一区二区三区| 国产欧美日韩三区| 亚洲特级片在线| 精品午夜一区二区三区在线观看 | 久久精品夜色噜噜亚洲aⅴ| 懂色一区二区三区免费观看| 亚洲精品成人精品456| 91精品欧美福利在线观看| 国产精品一二三区| 樱桃视频在线观看一区| 亚洲成av人在线观看| 亚洲国产一区二区视频| 欧美午夜精品一区二区三区| 麻豆成人久久精品二区三区红| 日本一区二区免费在线观看视频 | 亚洲欧美日韩电影| 91麻豆精品国产91久久久资源速度| 激情综合网激情| 成人欧美一区二区三区| 91精品国产乱码| 高清不卡一区二区在线| 亚洲成人激情av| 国产欧美日韩在线看| 7777精品伊人久久久大香线蕉完整版| 国产麻豆精品在线| 午夜精品免费在线观看| 亚洲欧洲精品一区二区三区| 日韩三区在线观看| 91黄色激情网站| 成人妖精视频yjsp地址| 男男成人高潮片免费网站| 亚洲激情自拍视频| 久久久国产午夜精品| 91精品国产美女浴室洗澡无遮挡| 91视频91自| 91久久人澡人人添人人爽欧美| 精品一区二区三区在线视频| 婷婷综合久久一区二区三区| 亚洲人成网站精品片在线观看| 26uuu另类欧美亚洲曰本| 777久久久精品| 欧美在线一二三四区| av中文一区二区三区| 国产成人小视频| 韩国精品在线观看| 麻豆中文一区二区| 青草av.久久免费一区| 亚洲gay无套男同| 亚洲午夜一区二区三区| 亚洲一区在线观看视频| 一区二区三区美女视频| 亚洲啪啪综合av一区二区三区| 国产精品免费视频观看| 国产欧美日韩一区二区三区在线观看| 精品88久久久久88久久久| 日韩一区二区免费在线观看| 欧美日韩精品三区| av成人老司机| 99久久精品国产网站| 一本久久综合亚洲鲁鲁五月天| 97国产精品videossex| 色综合久久88色综合天天6| 一本一本大道香蕉久在线精品| 91视频免费看| 欧美私模裸体表演在线观看| 欧美午夜精品一区二区蜜桃| 欧美日韩免费高清一区色橹橹 | 9191国产精品| 欧美一级夜夜爽| 日韩三级高清在线| 精品国产一区二区在线观看| 久久久亚洲精品石原莉奈| 久久伊99综合婷婷久久伊| 国产东北露脸精品视频| 蜜桃免费网站一区二区三区| 五月婷婷欧美视频| 亚洲成人中文在线| 亚洲成人手机在线| 亚洲成人免费在线观看| 天堂蜜桃91精品| 奇米影视7777精品一区二区| 免费观看30秒视频久久| 久久精品国产秦先生| 精品一区二区在线播放| 国产乱一区二区| 不卡在线视频中文字幕| 色综合一个色综合亚洲| 欧美三区在线视频| 欧美绝品在线观看成人午夜影视| 亚洲精品一区二区三区蜜桃下载| 日本一区二区电影| 亚洲成人777| 国产999精品久久久久久绿帽| 国产综合一区二区| 欧美高清性hdvideosex| 欧美精品一区二区三区在线| 亚洲欧美日韩国产手机在线 | 黄页网站大全一区二区| av中文字幕一区| 欧美一级二级三级乱码| 日韩毛片精品高清免费| 免费观看在线综合色| 99免费精品视频| 日韩欧美成人一区二区| 1024亚洲合集| 久久99精品久久久久久动态图| 91丨九色丨蝌蚪丨老版| 久久品道一品道久久精品| 亚洲国产wwwccc36天堂| 成人晚上爱看视频| 欧美一级在线免费| 一区二区三区精品在线观看| 国产成人免费在线观看不卡| 欧美精品久久99| 亚洲人成小说网站色在线| 国产成人午夜精品影院观看视频 | 日韩二区三区四区| 91视频.com| 日韩一二在线观看| 亚洲国产一区视频| 99精品视频在线观看| 久久精品一区二区三区不卡牛牛 | 国产精品1区2区3区在线观看| 不卡区在线中文字幕| 欧美精品乱码久久久久久按摩| 久久久久久久电影| 亚洲小说欧美激情另类| 国产福利精品导航| 欧美天堂亚洲电影院在线播放| 久久久蜜臀国产一区二区| 偷拍亚洲欧洲综合| www.一区二区| 欧美xxxxx牲另类人与| 亚洲激情六月丁香| 国产 日韩 欧美大片| 欧美电视剧免费全集观看| 五月天丁香久久| 欧美人妖巨大在线| 天天亚洲美女在线视频| 欧美日韩mp4| 日韩精品亚洲专区| 欧美一区二区成人6969|