Телефон: +7 (926) 245-03-63

TDBGrid - копирование в буфер обмена

Следующая статья: Поля DBGrid и Memo.

Простая процедура копирования информации из DBGrid в Clipboard может существенно облегчить жизнь при реализации требований экспорта выборок данных во внешние приемники:

 unit UnGridToClb;
 interface
 uses Windows, SysUtils, Classes, Dialogs, Grids, DBGrids, Db, DBTables, ClipBrd;
 procedure CopyGRDToClb(dbg :TDBGrid);
 // Копирует DBGrid в буфер обмена, после чего данные отлично переносятся
 // как в простой текстовый редактор, так и в Excel
 implementation
 procedure CopyGRDToClb(dbg: TDBGrid);
 var bm: TBookMark;
 pch, pch1: PChar;
 s, s2: string;
 i, j: integer;
 begin
 s :='';
 for j:=0 to dbg.Columns.Count - 1 do s:=s+dbg.Columns.Items[j].Title.Caption+#9 ;
 s:=s+#13+#10;
 if not dbg.DataSource.DataSet.active then
 begin
 ShowMessage('Нет выборки!!!');
 Exit;
 end;
 try
 dbg.Visible:=False;// Делаем сетку невидимой, чтобы не уходило время// на ее перерисовку при прокрутке DataSet bm:=dbg.DataSource.DataSet.GetBookmark;// чтобы не потерять текущую запись dbg.DataSource.DataSet.First; while not dbg.DataSource.DataSet.EOF do
 begin
 s2 :='';
 for j:=0 to dbg.Columns.Count - 1 do
 begin
 s2:=s2+dbg.Columns.Items[j].Field.AsString+#9;
 end;
 s:=s+s2+#13+#10;
 dbg.DataSource.DataSet.Next;
 end;// Переключаем клавиатуру «в русский режим», иначе - проблемы с кодировкой GetMem(pch, 100); GetMem(pch1, 100); GetKeyboardLayoutName(pch);
 StrCopy(pch1, pch);
 while pch <>'00000419' do
 begin
 ActivateKeyboardLayout(HKL_NEXT, 0);
 GetKeyboardLayoutName(pch);
 if StrComp(pch, pch1)=0 then// Круг замкнулся - нет такого языка'00000419'
 StrCopy(pch,'00000419');
 end;
 Clipboard.AsText:=s;// Данные - в буфер!!!
 while strComp(pch, pch1)<>0 do
 begin// Возвращаем режим клавиатуры
 ActivateKeyboardLayout(HKL_NEXT, 0);
 GetKeyboardLayoutName(pch);
 end; FreeMem(pch);
 FreeMem(pch1);
 dbg.DataSource.DataSet.GotoBookmark(bm);
 // ShowMessage('Данные успешно скопированы в буфер обмена.');
 finally
 dbg.Visible:=True;
 end;
 end;
 end.
Интересное в интернете: банковские кредиты малому бизнесу