DBGrid — копирование в буфер обмена
DBGrid — копирование в буфер обмена
DBGrid - копирование в буфер обмена Простая процедура копирования информации из 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.