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

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

?? dbgridehimpexp.pas

?? EHlib CN For Delphi2009
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
  { Routines to import/export DBGridEh to/from file/stream }

procedure WriteDBGridEhToExportStream(ExportClass: TDBGridEhExportClass;
  DBGridEh: TCustomDBGridEh; Stream: TStream; IsSaveAll: Boolean);
var DBGridEhExport: TDBGridEhExport;
begin
  DBGridEhExport := ExportClass.Create;
  try
    DBGridEhExport.DBGridEh := DBGridEh;
    DBGridEhExport.ExportToStream(Stream, IsSaveAll);
  finally
    DBGridEhExport.Free;
  end;
end;

procedure SaveDBGridEhToExportFile(ExportClass: TDBGridEhExportClass;
  DBGridEh: TCustomDBGridEh; const FileName: String; IsSaveAll: Boolean);
var DBGridEhExport: TDBGridEhExport;
begin
  DBGridEhExport := ExportClass.Create;
  try
    DBGridEhExport.DBGridEh := DBGridEh;
    DBGridEhExport.ExportToFile(FileName, IsSaveAll);
  finally
    DBGridEhExport.Free;
  end;
end;

procedure LoadDBGridEhFromImportFile(ImportClass: TDBGridEhImportClass;
  DBGridEh: TCustomDBGridEh; const FileName: String; IsLoadToAll: Boolean);
var DBGridEhImport: TDBGridEhImport;
begin
  DBGridEhImport := ImportClass.Create;
  try
    DBGridEhImport.DBGridEh := DBGridEh;
    DBGridEhImport.ImportFromFile(FileName, IsLoadToAll);
  finally
    DBGridEhImport.Free;
  end;
end;

procedure ReadDBGridEhFromImportStream(ImportClass: TDBGridEhImportClass;
  DBGridEh: TCustomDBGridEh; Stream: TStream; IsLoadToAll: Boolean);
var DBGridEhImport: TDBGridEhImport;
begin
  DBGridEhImport := ImportClass.Create;
  try
    DBGridEhImport.DBGridEh := DBGridEh;
    DBGridEhImport.ImportFromStream(Stream, IsLoadToAll);
  finally
    DBGridEhImport.Free;
  end;
end;

{ Routines to support clipboard with DBGridEh }

var
  CF_CSV: Word;
  CF_RICH_TEXT_FORMAT: Word;
//  CF_BIFF: Word;
//  CF_HTML_FORMAT: Word;

procedure Clipboard_PutFromStream(Format: Word; ms: TMemoryStream);
var
  Data: THandle;
  DataPtr: IntPtr;
{$IFNDEF CIL}
  Buffer: IntPtr;
{$ENDIF}
begin
{$IFNDEF CIL}
  Buffer := ms.Memory;
{$ENDIF}
  ClipBoard.Open;
  try
    Data := GlobalAlloc(GMEM_MOVEABLE + GMEM_DDESHARE, ms.Size);
    try
      DataPtr := GlobalLock(Data);
      try
{$IFDEF CIL}
        Marshal.Copy(ms.Memory, 0, DataPtr, ms.Size);
{$ELSE}
        Move(Buffer^, DataPtr^, ms.Size);
{$ENDIF}
        ClipBoard.SetAsHandle(Format, Data);
      finally
        GlobalUnlock(Data);
      end;
    except
      GlobalFree(Data);
      raise;
    end;
  finally
    ClipBoard.Close;
  end;
end;

procedure Clipboard_GetToStream(Format: Word; ms: TMemoryStream);
var
  Data: THandle;
  DataPtr: IntPtr;
{$IFDEF CIL}
  DataBytes: TBytes;
{$ENDIF}
begin
  ClipBoard.Open;
  try
    Data := ClipBoard.GetAsHandle(Format);
    if Data = 0 then Exit;
    DataPtr := GlobalLock(Data);
    if DataPtr = nil then Exit;
    try
{$IFDEF CIL}
      SetLength(DataBytes, GlobalSize(Data));
      Marshal.Copy(DataPtr, DataBytes, 0, GlobalSize(Data));
      ms.WriteBuffer(DataBytes, Length(DataBytes));
{$ELSE}
      ms.WriteBuffer(DataPtr^, GlobalSize(Data));
{$ENDIF}
    finally
      GlobalUnlock(Data);
    end;
  finally
    ClipBoard.Close;
  end;
end;

procedure DBGridEh_DoCutAction(DBGridEh: TCustomDBGridEh; ForWholeGrid: Boolean);
begin
  DBGridEh_DoCopyAction(DBGridEh, ForWholeGrid);
  DBGridEh_DoDeleteAction(DBGridEh, ForWholeGrid);
end;

procedure DBGridEh_DoDeleteAction(DBGridEh: TCustomDBGridEh; ForWholeGrid: Boolean);
var i: Integer;
  ColList: TColumnsEhList;
  ASelectionType: TDBGridEhSelectionType;

  procedure ClearColumns;
  var i: Integer;
    Field: TField;
  begin
    for i := 0 to ColList.Count - 1 do
    begin
      if ColList[i].CanModify(False) then
      begin
        if (ColList[i].Field <> nil) and ColList[i].Field.Lookup then
          Field := ColList[i].Field.Dataset.FieldByName(ColList[i].Field.KeyFields)
        else
          Field := ColList[i].Field;
        if Field.DataSet.CanModify then
        begin
          Field.DataSet.Edit;
          if Field.DataSet.State in [dsEdit, dsInsert] then
            Field.Clear;
        end;
      end;
    end;
  end;

  function DeletePrompt: Boolean;
  var
    Msg: string;
  begin
    Result := True;
    if ASelectionType = gstRecordBookmarks then
      if (DBGridEh.Selection.Rows.Count > 1) then
        Msg := SDeleteMultipleRecordsQuestion
      else
        Msg := SDeleteRecordQuestion
    else if ASelectionType = gstRectangle then
      Msg := SClearSelectedCellsEh
    else
      Exit;
    Result := not (dgConfirmDelete in DBGridEh.Options) or
      (MessageDlg(Msg, mtConfirmation, mbOKCancel, 0) <> idCancel);
  end;

begin
  with DBGridEh do
  begin
    if ForWholeGrid then ASelectionType := gstAll else ASelectionType := Selection.SelectionType;
    if (ASelectionType = gstNon) or
      (DataSource = nil) or (DataSource.Dataset = nil) or
      not DeletePrompt then
      Exit;
    with DataSource.Dataset do
    begin
      SaveBookmark;
      DisableControls;
      try
        case ASelectionType of
          gstRecordBookmarks:
            begin
              ColList := VisibleColumns;
              for i := 0 to Selection.Rows.Count - 1 do
              begin
                Bookmark := Selection.Rows[I];
                Delete;
              end;
              Selection.Clear;
            end;
          gstRectangle:
            begin
              ColList := TColumnsEhList.Create;
              try
                for i := Selection.Rect.LeftCol to Selection.Rect.RightCol do
                  if Columns[i].Visible then
                    ColList.Add(Columns[i]);
                Bookmark := Selection.Rect.TopRow;
                while True do
                begin
                  ClearColumns;
                  if DataSetCompareBookmarks(DBGridEh.DataSource.Dataset,
                    Selection.Rect.BottomRow, Bookmark) = 0 then Break;
                  Next;
                  if Eof then Break;
                end;
              finally
                ColList.Free;
              end;
              RestoreBookmark;
            end;
          gstColumns:
            begin
              ColList := Selection.Columns;
              First;
              while Eof = False do
              begin
                ClearColumns;
                Next;
              end;
              RestoreBookmark;
            end;
          gstAll:
            begin
              ColList := VisibleColumns;
              First;
              while Eof = False do
                Delete;
            end;
        end;
      finally
        EnableControls;
      end;
    end;
  end;
end;

function IsPlatformNT():boolean;
var VI : TOSVersionInfo;
begin
  VI.dwOSVersionInfoSize := sizeof (VI);
  GetVersionEx (VI);
  result := (VI.dwPlatformId = VER_PLATFORM_WIN32_NT);
end;

{$IFNDEF CIL}
procedure Clipboard_PutUnicodeFromStream(ms: TMemoryStream);
var
  Data: THandle;
  DataPtr: IntPtr;
  BufSize: Integer;
  Buffer: IntPtr;
begin
  Buffer := ms.Memory;
  ClipBoard.Open;
  try
    BufSize := MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, Buffer, ms.Size,
      nil, 0) * 2;
    Data := GlobalAlloc(GMEM_MOVEABLE + GMEM_DDESHARE, BufSize);
    try
      DataPtr := GlobalLock(Data);
      MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, Buffer, ms.Size, DataPtr,
        BufSize div 2);
      try
        ClipBoard.SetAsHandle(CF_UNICODETEXT, Data);
      finally
        GlobalUnlock(Data);
      end;
    except
      GlobalFree(Data);
      raise;
    end;
  finally
    ClipBoard.Close;
  end;
end;
{$ENDIF}

procedure SreamWriteNullStr(st: TStream);
begin
{$IFDEF CIL}
    st.WriteBuffer([0,0], 2);
{$ELSE}
    st.WriteBuffer(PChar('')^, 1);
{$ENDIF}
end;

procedure SreamWriteNullAnsiStr(st: TStream);
begin
{$IFDEF CIL}
    st.WriteBuffer([0], 1);
{$ELSE}
    st.WriteBuffer(PChar('')^, 1);
{$ENDIF}
end;

procedure DBGridEh_DoCopyAction(DBGridEh: TCustomDBGridEh; ForWholeGrid: Boolean);
var
  ms: TMemoryStreamEh;
begin
  ms := nil;
  Clipboard.Open;

  DBGridEh.DataSource.Dataset.DisableControls;
  try
    ms := TMemoryStreamEh.Create;
    ms.HalfMemoryDelta := $10000;

    WriteDBGridEhToExportStream(TDBGridEhExportAsText, DBGridEh, ms, ForWholeGrid);
    SreamWriteNullStr(ms);

{$IFNDEF CIL}
    if IsPlatformNT() then
      Clipboard_PutUnicodeFromStream(ms);
{$ENDIF}

    ms.Clear;

    WriteDBGridEhToExportStream(TDBGridEhExportAsCSV, DBGridEh, ms, ForWholeGrid);
    SreamWriteNullStr(ms);
    Clipboard_PutFromStream(CF_CSV, ms);
    ms.Clear;

    WriteDBGridEhToExportStream(TDBGridEhExportAsRTF, DBGridEh, ms, ForWholeGrid);
    SreamWriteNullStr(ms);
    Clipboard_PutFromStream(CF_RICH_TEXT_FORMAT, ms);
    ms.Clear;

    WriteDBGridEhToExportStream(TDBGridEhExportAsVCLDBIF, DBGridEh, ms, ForWholeGrid);
    Clipboard_PutFromStream(CF_VCLDBIF, ms);
    ms.Clear;

    { This version of HTML and Biff export routines don't work under MS Office

    WriteDBGridEhToExportStream(TDBGridEhExportAsHTML,DBGridEh,ms,ForWholeGrid);
    Clipboard_PutFromStream(CF_HTML_FORMAT,ms);
    ms.Clear;

    WriteDBGridEhToExportStream(TDBGridEhExportAsXLS,DBGridEh,ms,ForWholeGrid);
    Clipboard_PutFromStream(CF_BIFF,ms);
    ms.Clear;
    }

  finally
    ms.Free;
    Clipboard.Close;
    DBGridEh.DataSource.Dataset.EnableControls;
  end;
end;

procedure DBGridEh_DoPasteAction(DBGridEh: TCustomDBGridEh; ForWholeGrid: Boolean);
var
  ms: TMemoryStream;
begin
  ms := nil;
  Clipboard.Open;
  try
    ms := TMemoryStream.Create;

    if Clipboard.HasFormat(CF_VCLDBIF) then
    begin
      Clipboard_GetToStream(CF_VCLDBIF, ms);
      ms.Position := 0;
      ReadDBGridEhFromImportStream(TDBGridEhImportAsVCLDBIF, DBGridEh, ms, ForWholeGrid);
    end
    else if Clipboard.HasFormat(CF_TEXT) then
    begin
      Clipboard_GetToStream(CF_TEXT, ms);
      ms.Position := 0;
      ReadDBGridEhFromImportStream(TDBGridEhImportAsText, DBGridEh, ms, ForWholeGrid);
    end;

  finally
    ms.Free;
    Clipboard.Close;
  end;
end;

{ TDBGridEhExport }

procedure TDBGridEhExport.ExportToFile(FileName: String; IsExportAll: Boolean);
var FileStream: TFileStream;
begin
  FileStream := TFileStream.Create(FileName, fmCreate);
  try
    ExportToStream(FileStream, IsExportAll);
  finally
    FileStream.Free;
  end;
end;

procedure TDBGridEhExport.ExportToStream(AStream: TStream; IsExportAll: Boolean);
var i: Integer;
  ColList: TColumnsEhList;
  ASelectionType: TDBGridEhSelectionType;
begin
  Stream := AStream;
  try
    with DBGridEh do
    begin
      if IsExportAll then ASelectionType := gstAll else ASelectionType := Selection.SelectionType;
      if ASelectionType = gstNon then Exit;
      with DataSource.Dataset do
      begin
        DisableControls;
        SaveBookmark;
        try
          case ASelectionType of
            gstRecordBookmarks:
              begin
                ExpCols := VisibleColumns;
//                FooterValues := AllocMem(SizeOf(Currency) * ExpCols.Count * DBGridEh.FooterRowCount);
                SetLength(FooterValues, ExpCols.Count * DBGridEh.FooterRowCount);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区欧美激情| 国产欧美精品一区二区色综合朱莉 | 97成人超碰视| 精品视频999| 久久久精品国产免大香伊| 一区二区欧美国产| 国模一区二区三区白浆| 欧美午夜片在线看| 欧美韩日一区二区三区四区| 亚洲福利视频一区二区| 9色porny自拍视频一区二区| 欧美一区二视频| 亚洲人快播电影网| 国产成人在线影院| 精品国产伦一区二区三区观看方式 | 色婷婷综合久久久| 久久久精品中文字幕麻豆发布| 亚洲国产日韩精品| gogogo免费视频观看亚洲一| 日韩色在线观看| 亚洲日本乱码在线观看| 国产成人免费在线观看| 日韩精品一区二区三区视频播放| 亚洲欧美日韩国产手机在线 | 日本一区二区三区久久久久久久久不 | 中文字幕永久在线不卡| 乱一区二区av| 国产乱一区二区| 欧美精品乱人伦久久久久久| 亚洲 欧美综合在线网络| 9i看片成人免费高清| 欧美成人精品福利| 天天操天天干天天综合网| 色哟哟精品一区| 亚洲综合丝袜美腿| 91香蕉视频在线| 中文字幕第一区综合| 国产精品综合一区二区| 欧美成人a在线| 久久精品噜噜噜成人88aⅴ| 91麻豆精品国产自产在线| 香蕉成人伊视频在线观看| 在线视频你懂得一区| 亚洲午夜久久久| 欧美亚男人的天堂| 天天免费综合色| 日韩丝袜美女视频| 韩国成人在线视频| 久久久久久免费| 99re这里只有精品首页| 亚洲欧美日韩国产成人精品影院| 一本大道综合伊人精品热热| 一区二区三区国产精品| 欧美日韩国产电影| 免费高清在线视频一区·| 久久久久国色av免费看影院| 国产在线视频一区二区三区| 国产视频一区在线观看| 99在线精品一区二区三区| 一区二区在线观看免费| 在线播放欧美女士性生活| 精品一区二区久久| 国产精品嫩草影院av蜜臀| 色先锋aa成人| 奇米色一区二区| 国产亚洲视频系列| 色综合久久天天| 青青草原综合久久大伊人精品| 久久嫩草精品久久久久| 91免费精品国自产拍在线不卡| 亚洲韩国一区二区三区| 精品国产3级a| 91丨porny丨在线| 亚洲国产日韩一级| 国产偷国产偷精品高清尤物| jiyouzz国产精品久久| 日本不卡123| 欧美韩国日本不卡| 欧美伦理视频网站| 国产91精品露脸国语对白| 夜夜精品视频一区二区| 717成人午夜免费福利电影| 国产一区二区三区| 亚洲国产精品一区二区久久| 国产欧美一区二区精品性色 | 欧美欧美午夜aⅴ在线观看| 国产综合色产在线精品| 玉足女爽爽91| 国产欧美一区二区精品性色| 在线不卡中文字幕播放| 成人一区二区三区| 免费成人在线视频观看| 亚洲黄一区二区三区| 久久久99免费| 91精品国产麻豆国产自产在线| 国产91对白在线观看九色| 免费人成网站在线观看欧美高清| 亚洲三级小视频| 国产日韩一级二级三级| 91精品国产色综合久久不卡蜜臀| 欧美视频一区在线| 国产精品一线二线三线| 蜜桃视频一区二区三区在线观看| 亚洲欧美偷拍另类a∨色屁股| 26uuu欧美| 日韩欧美成人一区二区| 欧美另类videos死尸| 一本大道久久精品懂色aⅴ| 国产sm精品调教视频网站| 激情综合五月天| 麻豆精品视频在线观看免费| 一区二区三区精品视频| 自拍偷拍亚洲综合| 成人免费在线播放视频| 国产精品欧美综合在线| 国产欧美日韩另类一区| 精品对白一区国产伦| 欧美久久免费观看| 欧美性一级生活| 91传媒视频在线播放| 色综合天天综合网天天狠天天 | 亚洲国产高清在线| 国产欧美精品一区| 欧美激情综合五月色丁香| 国产视频视频一区| 国产精品剧情在线亚洲| 中文字幕精品一区二区三区精品| 中文成人综合网| 国产精品久久久久精k8| 综合分类小说区另类春色亚洲小说欧美 | 亚洲色图视频免费播放| 中文字幕亚洲视频| 亚洲黄色av一区| 日韩不卡一区二区| 蜜桃av一区二区三区| 久久69国产一区二区蜜臀| 国内成+人亚洲+欧美+综合在线| 国产一区二区三区四| 丁香啪啪综合成人亚洲小说 | 爽好多水快深点欧美视频| 亚洲韩国一区二区三区| 日韩精品1区2区3区| 狠狠网亚洲精品| 成人免费不卡视频| 欧美在线观看视频在线| 欧美一区国产二区| 国产一区 二区 三区一级| 337p日本欧洲亚洲大胆精品 | 日韩av电影天堂| 国产在线一区二区| 972aa.com艺术欧美| 欧美午夜精品一区二区蜜桃| 日韩三区在线观看| 国产欧美一区二区精品性| 一区二区三区在线不卡| 偷偷要91色婷婷| 国产激情一区二区三区四区 | 国产精品久久久久久久浪潮网站| 亚洲素人一区二区| 蜜臀a∨国产成人精品| 成人av电影免费在线播放| 91精品婷婷国产综合久久| 国产三级三级三级精品8ⅰ区| 亚洲日本一区二区三区| 久草在线在线精品观看| 欧洲一区在线电影| 国产午夜亚洲精品理论片色戒| 亚洲老妇xxxxxx| 激情欧美一区二区| 91看片淫黄大片一级在线观看| 日韩欧美中文字幕制服| 亚洲美女屁股眼交| 国产精品白丝jk黑袜喷水| 欧美三级在线播放| 国产精品嫩草99a| 免费观看日韩电影| 欧美性视频一区二区三区| 国产性天天综合网| 蜜桃视频在线观看一区| 色噜噜狠狠成人中文综合| 成人高清免费观看| 日本成人在线不卡视频| 精品一区二区三区免费毛片爱| 日本欧美在线看| 欧美激情自拍偷拍| 亚洲精品中文字幕在线观看| 国产一区二区三区在线观看免费视频 | 久久综合综合久久综合| 国产精品久久久久一区 | 日韩福利电影在线| 91美女片黄在线观看| 久久婷婷国产综合精品青草| 五月婷婷激情综合| 在线一区二区视频| 亚洲欧美日韩系列| 97精品久久久久中文字幕| 国产婷婷色一区二区三区在线| 久久国产夜色精品鲁鲁99| 欧美人妖巨大在线| 亚洲第一福利一区|