Копирует содержимое ячеек StringGrid в ClipBoard в формате, позволяющем

вставку, например, в Word или Excel. При CopySel=True копирует выделение,

иначе всю таблицу или указанный диапазон (CL- левый столбец и т.д.).

Code:

{ **** UBPFD *********** by ****

>> Копирование содержимого StringGrid в буфер обмена

Зависимости: Grids

Автор:       Борис Новгородов (MBo), Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра., Новосибирск

Copyright:   MBo

 

***************************************************** }

 

procedure SGCopyToCLP(SG: TStringGrid; CopySel: Boolean; CL: integer = -1;

RT: integer = -1; CR: integer = -1; RB: integer = -1);

var

i, j: Integer;

s: string;

begin

s := '';

with SG do

begin

   if CopySel then

   begin

     CL := Selection.Left;

     CR := Selection.Right;

     RT := Selection.Top;

     RB := Selection.Bottom;

   end;

   //при необходимости FixedRows и FixedCols можно заменить на 0

   if (CL < FixedCols) or (CL > CR) or (CL >= ColCount) then

     CL := FixedCols;

   if (CR < FixedCols) or (CL > CR) or (CR >= ColCount) then

     CR := ColCount - 1;

   if (RT < FixedRows) or (RT > RB) or (RT >= RowCount) then

     RT := FixedRows;

   if (RB < FixedCols) or (RT > RB) or (RB >= RowCount) then

     RB := RowCount - 1;

   for i := RT to RB do

   begin

     for j := CL to CR do

     begin

       s := s + Cells[j, i];

       if j < CR then

         s := s + #9;

     end;

     s := s + #13#10;

end;

end;

ClipBoard.AsText := s;

end;

 

// Пример использования:

SGCopyToCLP(StringGrid1, True); //выделение

SGCopyToCLP(StringGrid1, False); //все ячейки

SGCopyToCLP(StringGrid1, False, 1, 1, 3, 2); //диапазон, 6 ячеек

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить