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

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

?? dbgridehimpexp.pas

?? 一個功能強大的DBGRID控件
?? 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一区二区三区免费野_久草精品视频
国产精品久久久久影院亚瑟| 久久麻豆一区二区| 国产一区二区三区观看| 国产精品萝li| 日韩三级视频在线看| 一本大道久久精品懂色aⅴ| 美洲天堂一区二卡三卡四卡视频| 中文成人av在线| 欧美一卡二卡三卡四卡| 色8久久精品久久久久久蜜| 狠狠色狠狠色综合系列| 亚洲午夜精品17c| 国产精品另类一区| 精品国产1区二区| 91麻豆精品国产自产在线| av在线综合网| 国产酒店精品激情| 日韩高清在线电影| 亚洲精品国产一区二区三区四区在线| 久久久久久久久久久黄色| 欧美丰满美乳xxx高潮www| 色94色欧美sute亚洲线路一ni| 国产成人精品亚洲777人妖 | 亚洲国产综合91精品麻豆| 国产精品伦理一区二区| 26uuu欧美| 日韩精品最新网址| 欧美精品色一区二区三区| 日本韩国一区二区三区视频| 成人午夜视频免费看| 国产精品一区二区三区四区| 免费成人你懂的| 日本不卡一二三| 蜜桃免费网站一区二区三区| 日韩va欧美va亚洲va久久| 午夜婷婷国产麻豆精品| 亚洲成人av在线电影| 亚洲成精国产精品女| 亚洲大片一区二区三区| 亚洲第一主播视频| 亚洲线精品一区二区三区| 夜夜嗨av一区二区三区四季av| 中文字幕一区二区不卡| 中文字幕一区二区三区不卡| 亚洲视频在线一区观看| 亚洲乱码国产乱码精品精的特点| 亚洲日韩欧美一区二区在线| 亚洲品质自拍视频网站| 亚洲一区影音先锋| 亚洲国产中文字幕在线视频综合| 五月天精品一区二区三区| 天天综合网天天综合色| 日本中文一区二区三区| 理论电影国产精品| 国产乱色国产精品免费视频| 成人教育av在线| 91在线观看一区二区| 欧美在线制服丝袜| 欧美精品欧美精品系列| 精品国产免费久久| 国产精品全国免费观看高清| 亚洲黄色免费电影| 无吗不卡中文字幕| 久久99久久精品欧美| 国产69精品一区二区亚洲孕妇| 99久久精品国产一区| 欧美丝袜丝nylons| 欧美精品一区二区在线播放| 中日韩av电影| 亚洲国产日日夜夜| 国产在线精品免费| 91在线国内视频| 欧美一区三区二区| 欧美国产精品专区| 亚洲国产日韩精品| 极品少妇一区二区三区精品视频| 成人综合在线网站| 欧美日精品一区视频| 久久丝袜美腿综合| 亚洲综合一区二区精品导航| 麻豆国产精品777777在线| 不卡一区在线观看| 欧美丰满少妇xxxxx高潮对白| 国产人成亚洲第一网站在线播放| 亚洲毛片av在线| 狠狠色狠狠色综合系列| 欧美又粗又大又爽| 精品第一国产综合精品aⅴ| 亚洲精品免费在线播放| 国内成+人亚洲+欧美+综合在线| 91丝袜国产在线播放| 日韩欧美美女一区二区三区| 成人欧美一区二区三区白人| 水蜜桃久久夜色精品一区的特点| 国产不卡在线视频| 欧美精选午夜久久久乱码6080| 国产精品久线观看视频| 日本aⅴ亚洲精品中文乱码| 成人蜜臀av电影| 51精品视频一区二区三区| 国产成人三级在线观看| 欧美日韩一区高清| 国产精品嫩草影院com| 久久激五月天综合精品| 欧美系列亚洲系列| 国产精品天干天干在观线| 蜜桃精品视频在线观看| 色88888久久久久久影院按摩| 久久影视一区二区| 午夜不卡av免费| 欧美在线观看你懂的| 国产精品国产三级国产普通话蜜臀 | 久久久久久久久久电影| 视频一区二区三区中文字幕| 91蜜桃在线免费视频| 国产婷婷一区二区| 久久黄色级2电影| 欧美久久婷婷综合色| 亚洲在线观看免费视频| 不卡的看片网站| 久久九九影视网| 国模套图日韩精品一区二区| 欧美一区二区三区视频在线 | 99re成人在线| 国产嫩草影院久久久久| 国产在线视频一区二区| 欧美高清hd18日本| 亚洲第一电影网| 欧美最新大片在线看 | 亚洲五码中文字幕| 91久久精品一区二区| 亚洲人快播电影网| 国产精品18久久久久久vr| 精品精品国产高清a毛片牛牛| 日本伊人色综合网| 欧美日韩电影在线| 日韩中文字幕区一区有砖一区| 欧美日韩中文一区| 日韩激情一区二区| 91精品国产综合久久久久久久| 天天综合天天做天天综合| 7777精品伊人久久久大香线蕉经典版下载| 亚洲一区在线免费观看| 欧美视频在线观看一区二区| 亚洲一区二区三区影院| 欧美精品自拍偷拍| 开心九九激情九九欧美日韩精美视频电影 | 波多野结衣的一区二区三区| 亚洲视频一区二区在线| 91成人免费网站| 日韩成人伦理电影在线观看| 日韩精品资源二区在线| 国产一二三精品| 国产精品视频一二三| 91在线播放网址| 亚洲一区二区三区中文字幕| 欧美一级国产精品| 国产在线播精品第三| 中文字幕+乱码+中文字幕一区| 一本色道**综合亚洲精品蜜桃冫| 一卡二卡欧美日韩| 日韩一区二区三区四区| 国产乱妇无码大片在线观看| 成人欧美一区二区三区| 欧美日本在线播放| 国产精品综合一区二区三区| 国产精品剧情在线亚洲| 欧美日韩国产高清一区| 久久成人18免费观看| 中文字幕av在线一区二区三区| 在线观看免费亚洲| 久久国产剧场电影| 亚洲视频狠狠干| 91精品国产91久久综合桃花| 国产成人精品www牛牛影视| 亚洲一区二区三区精品在线| 日韩天堂在线观看| 99精品久久久久久| 日韩高清电影一区| 中文字幕五月欧美| 91精品国产高清一区二区三区蜜臀 | 日本va欧美va欧美va精品| 欧美高清在线精品一区| 欧美日韩一区成人| 国产91丝袜在线播放九色| 亚洲成人www| 中文乱码免费一区二区| 91精品国产乱码久久蜜臀| 成人高清伦理免费影院在线观看| 亚洲成a人片综合在线| 国产欧美久久久精品影院| 欧美久久久久久久久| 99国产精品国产精品毛片| 美女视频第一区二区三区免费观看网站| 国产精品美女久久久久久久久 | 日韩美女啊v在线免费观看| 欧美一区二区视频网站| a亚洲天堂av| 国产在线观看一区二区| 日韩电影在线一区二区|