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

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

?? flatexcel.pas

?? comerose_flatstyle_v4.42.9.0_d7.rar
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
  vState := EduceDatas.State;
  if Filer.Ancestor = nil then
    StoreIt := vState = csCustomized
  else
    if vState <> TDefineExcel(Filer.Ancestor).EduceDatas.State then
      StoreIt := True
    else
      StoreIt := (vState = csCustomized) and
        (not CollectionsEqual(EduceDatas, TDefineExcel(Filer.Ancestor).EduceDatas, Self, TDefineExcel(Filer.Ancestor)));

  Filer.DefineProperty('Columns', ReadColumns, WriteColumns, StoreIt);
  inherited DefineProperties(Filer);
end;

procedure TDefineExcel.ReadColumns(Reader: TReader);
begin
  EduceDatas.Clear;
  Reader.ReadValue;
  Reader.ReadCollection(EduceDatas);
end;

procedure TDefineExcel.WriteColumns(Writer: TWriter);
begin
  if EduceDatas.State = csCustomized then
     Writer.WriteCollection(EduceDatas)
  else  // ancestor state is customized, ours is not
     Writer.WriteCollection(nil);
end;

function TDefineExcel.GetFieldCount: Integer;
begin
  if Assigned(FDataLink.DataSet) then
     result := FDataLink.FieldCount
  else
     result := 0;
end;

procedure TDefineExcel.BeginLayout;
begin
  BeginUpdate;
  if FLayoutLock = 0 then
     EduceDatas.BeginUpdate;
  Inc(FLayoutLock);
end;

procedure TDefineExcel.BeginUpdate;
begin
  Inc(FUpdateLock);
end;

procedure TDefineExcel.EndLayout;
begin
  if FLayoutLock > 0 then
  begin
    try
      try
        if FLayoutLock = 1 then
           InitColumns;
      finally
        if FLayoutLock = 1 then
           FColumns.EndUpdate;
      end;
    finally
      Dec(FLayoutLock);
      EndUpdate;
    end;
  end;
end;

procedure TDefineExcel.EndUpdate;
begin
  if FUpdateLock > 0 then
     Dec(FUpdateLock);
end;

procedure TDefineExcel.LayoutChanged;
begin
  if AcquireLayoutLock then
     EndLayout;
end;

function TDefineExcel.AcquireLayoutLock: Boolean;
begin
  Result := (FUpdateLock = 0) and (FLayoutLock = 0);
  if Result then BeginLayout;
end;

procedure TDefineExcel.Loaded;
begin
  inherited Loaded;
  LayoutChanged;
end;

function TDefineExcel.GetDataSource: TDataSource;
begin
  Result := FDataLink.DataSource;
end;

procedure TDefineExcel.SetDataSource(const Value: TDataSource);
begin
  if Value = FDatalink.Datasource then Exit;
  if Assigned(Value) then
    if Assigned(Value.DataSet) then
      if Value.DataSet.IsUnidirectional then
         DatabaseError(SDataSetUnidirectional);
  FDataLink.DataSource := Value;
  if Value <> nil then Value.FreeNotification(Self);
end;

procedure TDefineExcel.LinkActive(Value: Boolean);
begin
  try
    LayoutChanged;
  finally
    //
  end;
end;

function TDefineExcel.CreateDataLink: TEduceLink;
begin
  Result := TEduceLink.Create(Self);
end;

function TDefineExcel.GetColumnCount: integer;
begin
  Result := FColumns.Count;
end;

function TDefineExcel.GetEduceCount: integer;
var
  i:integer;
begin
  result := 0;
  for i:= 0 to FColumns.Count - 1 do
      if FColumns[i].Visible then result := result + 1;
end;

procedure TDefineExcel.ExportAll;
var i:integer;
begin
  for i:=0 to ColumnCount - 1 do FColumns[i].Visible := True;
end;

function TDefineExcel.GetFields(FieldIndex: Integer): TField;
begin
  Result := FDatalink.Fields[FieldIndex];
end;

procedure TDefineExcel.CancelLayout;
begin
  if FLayoutLock > 0 then
  begin
    if FLayoutLock = 1 then
       EduceDatas.EndUpdate;
    Dec(FLayoutLock);
    EndUpdate;
  end;
end;

procedure TDefineExcel.ExecuteSave;
var
  SaveDlg: TSaveDialog;
  FileStream: TFileStream;
  inx: integer;
  UseState: boolean;
  tFile:String;
begin
case FEduceMode of
 emSingle:
 begin
 FieldForm := TFieldForm.Create(self);
 try
  FieldForm.FieldBox.Items.Clear;
  for inx := 0 to FColumns.Count - 1 do
  begin
      FieldForm.FieldBox.Items.Add(FColumns[inx].Caption);
      FieldForm.FieldBox.Checked[inx] := FColumns[inx].Visible;
  end;
  FieldForm.ShowModal;
  if FieldForm.ModalResult = mrOk then
  begin
   for inx := 0 to FieldForm.FieldBox.Items.Count - 1 do
       FColumns[inx].Visible := FieldForm.FieldBox.Checked[inx];
   SaveDlg := TSaveDialog.Create(self);
   try
    SaveDlg.DefaultExt := FDefaultExt;
    SaveDlg.Filter     := '微軟電子表格(MS-EXCEL文件)|*.XLS';
    SaveDlg.Title      := '保存為';
    SaveDlg.FileName   := FFileName;
    if SaveDlg.Execute then
    begin
     if Assigned(FDataLink.DataSet) then
     begin
      useState := true;
      if FileExists(SaveDlg.FileName) then
         useState := DeleteFile(SaveDlg.FileName);
      if useState then
      begin
       FileStream := TFileStream.Create(SaveDlg.FileName, fmCreate);
       try
        SaveExcel(FileStream);
       Finally
        FileStream.Free;
       end;
      end
      else ShowMessage('文件正在使用中,不能覆蓋文件!');
     end;
    end;
   finally
    SaveDlg.Free;
   end;
  end;
 finally
  FieldForm.Free;
  FieldForm := Nil;
 end;
 end;
 emDefault:
 begin
   if Assigned(FDataLink.DataSet) then
     begin
      useState := true;
      tFile    := FFileName;
      if UpperCase(ExtractFileExt(FFileName))<>UpperCase(FDefaultExt) then
         tFile := FFileName + FDefaultExt;
      if FileExists(tFile) then
         useState := DeleteFile(tFile);
      if useState then
      begin
       FileStream := TFileStream.Create(tFile, fmCreate);
       try
        SaveExcel(FileStream);
       Finally
        FileStream.Free;
       end;
      end
      else ShowMessage('文件正在使用中,不能覆蓋文件!');
     end;
 end;
end;
end;

procedure TDefineExcel.InitFields;
var
  inx: integer;
  Col: TEduceData;
begin
 if Assigned(FDataLink.DataSet) then
 begin
 with FDataLink.DataSet.FieldDefs do
 begin
  if (not FDataLink.Active) and (Count > 0) then
  begin
    FColumns.BeginUpdate;
    FColumns.Clear;
    for inx:=0 to Count - 1 do
    begin
      Col := FColumns.Add;
      Col.FieldName := Items[inx].Name;
      Col.Caption   := Items[inx].Name;
    end;
    FColumns.EndUpdate;
  end;
 end;
 end;
end;

procedure TDefineExcel.ClearFields;
begin
 FColumns.BeginUpdate;
 FColumns.Clear;
 FColumns.EndUpdate;
end;

procedure TDefineExcel.RestoreFields;
var
 inx : integer;
 col : TEduceData;
begin
 FColumns.BeginUpdate;
 for inx:=0 to FColumns.Count - 1 do
 begin
   Col := FColumns[inx];
   Col.Caption  := Col.FieldName;
   Col.Visible  := True;
 end;
 FColumns.EndUpdate;
end;

procedure TDefineExcel.SetDefaultExt(Value: String);
begin
  if FDefaultExt <> Value then
  begin
     if Value[1] <> '.' then
        Value := '.'+value;
     FDefaultExt := Value;
  end;
end;

{ TEduceLink }

const
  MaxMapSize = (MaxInt div 2) div SizeOf(Integer);

type
  TIntArray = array[0..MaxMapSize] of Integer;
  PIntArray = ^TIntArray;

constructor TEduceLink.Create(ADSExcel: TDefineExcel);
begin
  inherited Create;
  FCells        := ADSExcel;
  VisualControl := True;
end;

destructor TEduceLink.Destroy;
begin
  ClearMapping;
  inherited Destroy;
end;

function TEduceLink.GetDefaultFields: Boolean;
var
  I: Integer;
begin
  Result := True;
  if DataSet <> nil then
     Result := DataSet.DefaultFields;
  if Result and SparseMap then
  for I := 0 to FFieldCount-1 do
    if FFieldMap[I] < 0 then
    begin
      Result := False;
      Exit;
    end;
end;

function TEduceLink.GetFields(I: Integer): TField;
begin
  if (0 <= I) and (I < FFieldCount) and (FFieldMap[I] >= 0) then
    Result := DataSet.FieldList[FFieldMap[I]]
  else
    Result := nil;
end;

function TEduceLink.AddMapping(const FieldName: string): Boolean;
var
  Field: TField;
  NewSize: Integer;
begin
  Result := True;
  if FFieldCount >= MaxMapSize then
     RaiseGridError(STooManyColumns);
  if SparseMap then
     Field := DataSet.FindField(FieldName)
  else
     Field := DataSet.FieldByName(FieldName);

  if FFieldCount = Length(FFieldMap) then
  begin
    NewSize := Length(FFieldMap);
    if NewSize = 0 then
       NewSize := 8
    else
       Inc(NewSize, NewSize);
    if (NewSize < FFieldCount) then
        NewSize := FFieldCount + 1;
    if (NewSize > MaxMapSize) then
        NewSize := MaxMapSize;
    SetLength(FFieldMap, NewSize);
  end;
  if Assigned(Field) then
  begin
    FFieldMap[FFieldCount] := Dataset.FieldList.IndexOfObject(Field);
    Field.FreeNotification(FCells);
  end
  else
    FFieldMap[FFieldCount] := -1;
  Inc(FFieldCount);
end;

procedure TEduceLink.ActiveChanged;
begin
  if Active and Assigned(DataSource) then
    if Assigned(DataSource.DataSet) then
      if DataSource.DataSet.IsUnidirectional then
         DatabaseError(SDataSetUnidirectional);
  FCells.LinkActive(Active);
  FModified := False;
end;

procedure TEduceLink.ClearMapping;
begin
  FFieldMap   := nil;
  FFieldCount := 0;
end;

procedure TEduceLink.LayoutChanged;
var
  SaveState: Boolean;
begin
  SaveState := FCells.LayoutSet;
  FCells.LayoutSet := True;
  try
    FCells.LayoutChanged;
  finally
    FCells.LayoutSet := SaveState;
  end;
  inherited LayoutChanged;
end;

function TEduceLink.GetMappedIndex(ColIndex: Integer): Integer;
begin
  if (0 <= ColIndex) and (ColIndex < FFieldCount) then
    Result := FFieldMap[ColIndex]
  else
    Result := -1;
end;

function TEduceLink.IsAggRow(Value: Integer): Boolean;
begin
  Result := False;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区中文字幕在线 | 日韩精品一区二区三区在线观看| 欧美不卡123| 一区二区三区色| 国产露脸91国语对白| 欧美精品乱码久久久久久按摩| 中文字幕乱码日本亚洲一区二区| 日韩高清不卡一区二区三区| 91热门视频在线观看| 久久久噜噜噜久噜久久综合| 免费观看在线综合色| 色狠狠综合天天综合综合| 欧美激情一区二区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 在线免费观看日韩欧美| 国产精品盗摄一区二区三区| 精品无人码麻豆乱码1区2区 | 亚洲人成影院在线观看| 国产一区二区三区黄视频| 5858s免费视频成人| 亚洲国产成人91porn| av中文字幕在线不卡| 国产欧美一区二区精品性| 久久不见久久见中文字幕免费| 欧美特级限制片免费在线观看| 亚洲日本在线a| 成人午夜伦理影院| 国产精品理论片在线观看| 大尺度一区二区| 亚洲国产精华液网站w| 成人亚洲一区二区一| 欧美韩日一区二区三区四区| 国产福利视频一区二区三区| 亚洲精品在线免费观看视频| 韩国理伦片一区二区三区在线播放| 欧美一区二区三区免费观看视频| 日韩av一二三| 欧美变态凌虐bdsm| 国产精品一区二区久久不卡 | 国产在线精品一区在线观看麻豆| 日韩精品资源二区在线| 美国毛片一区二区| 欧美精品一区二区三区视频| 国产一区二区三区黄视频| 亚洲国产高清aⅴ视频| 91香蕉国产在线观看软件| 亚洲精品中文字幕在线观看| 欧美性猛片xxxx免费看久爱| 性做久久久久久| 日韩美女在线视频| 成人美女视频在线观看18| 亚洲精品欧美综合四区| 欧美欧美午夜aⅴ在线观看| 男男成人高潮片免费网站| 精品国产一区二区三区久久影院| 国产99精品在线观看| 亚洲人成在线播放网站岛国| 4438亚洲最大| 国产成人精品免费在线| 亚洲人成亚洲人成在线观看图片| 欧美做爰猛烈大尺度电影无法无天| 午夜不卡av在线| 久久久久久99精品| 色婷婷久久99综合精品jk白丝| 亚洲高清不卡在线观看| 久久综合一区二区| 91亚洲国产成人精品一区二区三| 日韩高清不卡一区| 国产精品色一区二区三区| 欧美色国产精品| 高清成人免费视频| 亚洲成av人片一区二区三区| 久久免费视频色| 欧美午夜精品久久久| 精品一区二区三区在线播放 | 欧洲精品一区二区三区在线观看| 久久精品国产久精国产爱| 亚洲欧洲色图综合| 日韩一区二区三区三四区视频在线观看| 国产精品小仙女| 日本三级亚洲精品| 亚洲男同性视频| 久久九九全国免费| 欧美一级日韩免费不卡| 91天堂素人约啪| 国产乱一区二区| 日韩在线观看一区二区| 亚洲免费在线视频一区 二区| 精品久久久久久久人人人人传媒 | 亚洲激情在线播放| 国产嫩草影院久久久久| 日韩欧美www| 在线电影欧美成精品| 色综合一个色综合亚洲| 成人黄色网址在线观看| 国产一二精品视频| 免费观看30秒视频久久| 亚洲成人久久影院| 亚洲欧美日韩国产手机在线| 欧美激情一区二区三区在线| 久久综合狠狠综合久久综合88| 欧美日韩免费一区二区三区视频| 99国产欧美另类久久久精品| 国产成人福利片| 国产电影一区在线| 国产精品18久久久久| 黄色日韩网站视频| 美女国产一区二区三区| 丝瓜av网站精品一区二区| 亚洲另类在线一区| 亚洲少妇中出一区| 亚洲人成影院在线观看| 国产精品久久毛片av大全日韩| 国产亚洲一二三区| 久久久久久久网| 欧美激情一区在线| 国产精品久久久久久妇女6080 | 国产乱码字幕精品高清av | 天堂精品中文字幕在线| 日日夜夜精品视频免费| 日韩专区在线视频| 日韩在线一二三区| 精品影视av免费| 国产尤物一区二区| 处破女av一区二区| 99国产精品久久久久| 色悠悠久久综合| 欧美色综合天天久久综合精品| 欧美日韩免费一区二区三区| 欧美一区二区三区视频在线| 精品捆绑美女sm三区| 国产色综合久久| 亚洲精品高清在线| 免费精品99久久国产综合精品| 国产一区二区影院| caoporn国产精品| 色婷婷国产精品| 欧美乱妇一区二区三区不卡视频 | 欧美性大战久久| 欧美一区欧美二区| 久久久99精品免费观看不卡| 中文无字幕一区二区三区| 亚洲欧美激情插| 麻豆91精品91久久久的内涵| 国产酒店精品激情| 在线观看视频一区二区欧美日韩| 在线电影国产精品| 亚洲国产精品高清| 婷婷国产v国产偷v亚洲高清| 美女视频免费一区| 成人免费看黄yyy456| 欧美日韩精品系列| 日本一区二区三区dvd视频在线| 樱花草国产18久久久久| 日本视频一区二区| 一本大道av一区二区在线播放 | 男男成人高潮片免费网站| 成人免费看片app下载| 在线观看91精品国产麻豆| 中文字幕精品一区| 日韩高清在线不卡| 91老司机福利 在线| 精品蜜桃在线看| 亚洲综合色噜噜狠狠| 国产盗摄视频一区二区三区| 欧美麻豆精品久久久久久| 中文字幕乱码一区二区免费| 视频在线观看一区二区三区| 成人激情小说乱人伦| 91精品国产乱| 一区二区久久久久| 粉嫩久久99精品久久久久久夜| 91精品国产入口| 亚洲一区二区三区自拍| 99天天综合性| 久久久九九九九| 免费美女久久99| 欧美精品精品一区| 亚洲尤物视频在线| 色呦呦网站一区| 国产精品视频九色porn| 国产一区二区三区免费| 51精品秘密在线观看| 亚洲一区二区中文在线| jlzzjlzz国产精品久久| 久久久综合精品| 国产在线精品一区在线观看麻豆| 91精品国产色综合久久| 亚洲6080在线| 欧美伊人精品成人久久综合97| 自拍偷拍欧美激情| 不卡的av网站| 亚洲色图欧美偷拍| 99精品热视频| 亚洲高清中文字幕| 欧洲精品在线观看| 亚洲成人免费视频| 欧美放荡的少妇| 久久成人久久爱| 久久免费午夜影院|