Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как скопировать выбранные в DBGrid записи в клипборд

Delphi , ОС и Железо , Буфер обмена

Как скопировать выбранные в DBGrid записи в клипборд

Автор: Тенцер А.Л.


const
 FIELD_DELIMITER = #9;
 RECORD_DELIMITER = #10;


procedure CopyDBGridToClipboard( Grid : TDBGrid );
var
 BM : String;
 S : String;
 S1: String;
 I : Integer;
begin
 with Grid  do begin
  if Assigned( DataSource ) and
     Assigned( DataSource.DataSet ) and
     DataSource.DataSet.Active then
  with DataSource.DataSet do begin
   S := '';
   DisableControls;
   BM := BookMark;
   for I := 0 to Pred( Columns.Count ) do begin
    if Assigned(Columns.Items[I].Field) then
      S := S + Columns.Items[I].Title.Caption + FIELD_DELIMITER;
   end;
   S[ Length( S ) ] := RECORD_DELIMITER;
   First;
   while not Eof do begin
    S1 := '';
    for I := 0 to Pred( Columns.Count ) do begin
      if Assigned(Columns.Items[I].Field) then
        S1 := S1 + FieldByName( Columns[I].FieldName ).AsString +
FIELD_DELIMITER;
    end;
    S1[ Length( S1 ) ] := RECORD_DELIMITER;
    S := S + S1;
    Next;
   end;
   BookMark := BM;
   EnableControls;
//   Clipboard.SetTextBuf( PChar( S ) );
   SendToClipboard( S );
  end;
 end;
end;

Программный процессор CopyDBGridToClipboard - это процедура Delphi, которая копирует выбранные записи из объекта TDBGrid в системную буфер обмена. Вот шаг за шагом, как она работает:

  1. Процедура принимает объект TDBGrid в качестве параметра, который представляет собой таблицу, содержащую данные для копирования.
  2. Она проверяет, имеет ли grid валидный источник данных, dataset и активную запись. Если любое из этих условий не выполнено, процедура ничего не делает.
  3. Она отключает управляющие элементы в таблице, чтобы предотвратить любые пользовательские интеракции во время процесса копирования.
  4. Она устанавливает маркер для текущей позиции в dataset, который используется позднее для восстановления оригинальной позиции после копирования.
  5. Она проходит по каждому столбцу в таблице и добавляет заголовок столбца и разделитель полей (#9) в строковую переменную S.
  6. Затем она проходит по каждой записи в dataset и добавляет значения каждого поля в записи, разделенные разделителем полей (#9), к тому же строковому переменному S.
  7. После копирования всех записей она восстанавливает оригинальный маркер позиции в dataset и снова включает управляющие элементы таблицы.
  8. Наконец, она использует процедуру SendToClipboard (не показанную в этом кодовом фрагменте) для копирования содержимого S в системную буфер обмена.

Комментарий // Clipboard.SetTextBuf( PChar( S )); гласит, что альтернативное реализация может использовать метод SetTextBuf объекта TClipboard вместо этого, но автор chose не использовать этот подход по какой-то причине.

В целом, эта процедура обеспечивает удобный способ копирования выбранных записей из объекта TDBGrid в системную буфер обмена.

В статье рассматривается процедура копирования выбранных записей в DBGrid в клипборд, которая использует поля и рекорды для форматирования строки и отправки ее в буфер обмена.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Буфер обмена ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-24 20:03:03/0.0034999847412109/0