Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2016, 09:16   #1
starcon
 
Регистрация: 29.10.2016
Сообщений: 3
По умолчанию Копирование строки из DBGrid-а в Clipboard

Уважаемые форумчане, помогите разобраться в коде.
Нужно копировать только выделенные строки из DBGrid в Clipboard.
Вот рабочий код для копирования всей таблицы
Код:
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;
    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
        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);
  finally
    dbg.Visible := True;
  end;
end;
starcon вне форума Ответить с цитированием
Старый 29.10.2016, 09:33   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

см. DBGrid.SelectedRows
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.10.2016, 10:04   #3
starcon
 
Регистрация: 29.10.2016
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
см. DBGrid.SelectedRows
Спасибо, я знаю ,что за строки отвечает SelectedRows , а за колонки Columns.

Не знаю , как правильно поменять это в коде.

Только начал изучать язык
starcon вне форума Ответить с цитированием
Старый 29.10.2016, 11:24   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цикл не по DataSet, а по SelectedRows. Строку датасета получать с помощью GotoBookmark. В делфийском хелпе для SelectedRows и пример есть на этот случай
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.10.2016, 11:46   #5
starcon
 
Регистрация: 29.10.2016
Сообщений: 3
По умолчанию

Спасибо, разобрался.
starcon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
копирование ячеек на лист 2 и по условию копирование строки в буфер FiataliS Microsoft Office Excel 7 11.05.2020 18:19
копирование изображения из Clipboard Darth_Vader C# (си шарп) 0 18.11.2012 15:35
Копирование строки из DBGrid VHomer БД в Delphi 8 28.09.2010 13:59
копирование определенного набора данных из dbgrid в clipboard kate158 Общие вопросы Delphi 9 15.10.2008 18:20
Вставка данных(Excel) из clipboard в DBGrid mahsus Общие вопросы Delphi 1 07.10.2007 02:02