Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.14;
Скачать: CL | DM;

Вниз

работа с буфером данных   Найти похожие ветки 

 
ArtemB ©   (2003-03-26 07:25) [0]

Имеется таблица с записями...

Пользователь выделяет какие-то записи (Ctrl+Click мышки),
далее эти записи по Ctrl+C надо скинуть в буфер, чтобы потом их всавить в Exel, например...
Как это можно сделать???

(Да, еще хорошо бы чтоб шапка была как у таблицы в DBGrid)

Спасибо.


 
_Shade   (2003-03-26 07:39) [1]

Пробовал читать мантры, но меня так и не просветлило на предмет того, что ты хотел сказать. Какая таблица, где имеется?


 
ArtemB ©   (2003-03-26 07:55) [2]

Да любая таблица (что это важно?)

В DBGrid отображаем её, полльзователь выделяет записи какие он хочет скинуть в буфер (к примеру, по Cntrl+ClickMouse по заиси в DBGrid)...

Как мне скопировать то все выделенные записи (строки) BGrid,а
в бефер, а потом их там всавить в Exel???


 
BorisUK ©   (2003-03-26 08:22) [3]

Вот пример из DbGridEh

procedure TForm1.bbCopyClick(Sender: TObject);
begin
DBGridEh_DoCopyAction(DBGridEh1,False);
end;

procedure DBGridEh_DoCopyAction(DBGridEh: TCustomDBGridEh; ForWholeGrid: Boolean);
var ms: TMemoryStream;
begin
ms := nil;
Clipboard.Open;

DBGridEh.DataSource.Dataset.DisableControls;
try
ms := TMemoryStream.Create;

WriteDBGridEhToExportStream(TDBGridEhExportAsText, DBGridEh, ms, ForWholeGrid);
ms.WriteBuffer(PChar("")^, 1);
Clipboard_PutFromStream(CF_TEXT, ms);
ms.Clear;

WriteDBGridEhToExportStream(TDBGridEhExportAsCSV, DBGridEh, ms, ForWholeGrid);
ms.WriteBuffer(PChar("")^, 1);
Clipboard_PutFromStream(CF_CSV, ms);
ms.Clear;

WriteDBGridEhToExportStream(TDBGridEhExportAsRTF, DBGridEh, ms, ForWholeGrid);
ms.WriteBuffer(PChar("")^, 1);
Clipboard_PutFromStream(CF_RICH_TEXT_FORMAT, ms);
ms.Clear;

WriteDBGridEhToExportStream(TDBGridEhExportAsVCLDBIF, DBGridEh, ms, ForWholeGrid);
Clipboard_PutFromStream(CF_VCLDBIF, ms);
ms.Clear;

finally
ms.Free;
Clipboard.Close;
DBGridEh.DataSource.Dataset.EnableControls;
end;
end;



Если немного доработать то можно и шапку туда же вставлять...


 
Наталия ©   (2003-03-26 08:25) [4]

делаешь цикл по выделенным записям и формируешь текстовую строку с разделителями:
Buff:=Buff+<нужные тебе данные>+"#9"+...+"#13"

Затем копируешь в Clipboard
Clipboard.clear;
Clipboard.astext:=Buff;
W.cells[16,1].select;
E.activesheet.paste;



 
_Shade   (2003-03-26 10:21) [5]

Наталия, а зачем Clipboard? Почему бы сразу не сложить в ёксель?


 
Наталия ©   (2003-03-26 12:10) [6]

Потому что:
1) В вопросе это явно прозвучало
2) Если объём текста большой, то через Clipboard значительно быстрее, чем при обращении к листу для каждого значения



Страницы: 1 вся ветка

Текущий архив: 2003.04.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
1-44161
denis24
2003-04-03 14:10
2003.04.14
замена символа в tedit


14-44361
Mike B.
2003-03-31 11:54
2003.04.14
По сообщениям газет


1-44105
Suharew
2003-04-02 20:33
2003.04.14
Как узнать какая клавиша нажата впределах моей проги.


7-44489
Tema
2003-02-18 08:54
2003.04.14
Помогите реализовать


14-44329
GDBoy
2003-03-30 21:04
2003.04.14
Скиноинтерфейс......