Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.083 c
1-44156
9600
2003-04-03 14:59
2003.04.14
TVolumeControl - кто-нибудь о таком слышал ???


6-44286
Arkady
2003-02-18 10:21
2003.04.14
Перехват Socket


6-44300
Behemoth
2003-02-20 18:37
2003.04.14
Помогите выбрать...


3-44061
Vick
2003-03-26 13:08
2003.04.14
Выполнение пользовательской функции с помощью АДО


14-44433
Новичек
2003-03-29 14:19
2003.04.14
Новости VCL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский