Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как скопировать в буфер всю строку из Grid? [D5, Win2k]


serg128 ©   (2004-08-05 10:40:00) 

Т.е. стоя на одной (или нескольких) строках в DBGrid, и при нажатии Ctrl+C как их скопировать в буфер? Чтобы потом можно было их вставить по Ctrl+V в Excel (или куда-то ещё)? Спасибо.


Андрей Сенченко   (2004-08-05 14:23:00) [1]

красиво ... минут 10 любовался ... OemToAnsi правда не нашел при этом


serg128   (2004-08-05 14:07:00) [2]

Так работает:

 AnsiString s;
 AnsiString c = DBG->DataSource->DataSet->Bookmark;
 // Ñîáèðàåì çàãîëîâêè
 for(int j = 0; j < DBG->Columns->Count; j++)
   s += DBG->Columns->Items[j]->Title->Caption + "\t";
 s += "\r\n \r\n";
 // à òóò âûãðåáàåì ñîäåðæèìîå âûäåëåííûõ ðÿäîâ
 for(int i=0; iSelectedRows->Count; i++)
 {
   DBG->DataSource->DataSet->GotoBookmark((void *)DBG->SelectedRows->Items[i].c_str());
   for(int j = 0; j < DBG->Columns->Count; j++)
     s += DBG->DataSource->DataSet->Fields->FieldByName(DBG->Columns->Items[j]->FieldName)->Text + " \t ";
   s += " \r\n";
 }
 DBG->DataSource->DataSet->GotoBookmark((void*)c.c_str());
 // Ñîõðàíÿåì òåêóùóþ ðàñêëàäêó êëàâèàòóðû
 GetKeyboardLayoutName(c.c_str());
 // óñòàíàâëèâàåì ðàñêëàäêó ðóññêîãî ÿçûêà
 LoadKeyboardLayout("00000419", KLF_ACTIVATE);
 // ñïèñûâàåì ñîäåðæèìîå â áóôåð îáìåíà
 Clipboard()->AsText = s;
 // âîçâðàùàåì èñõîäíóþ ðàñêëàäêó
 LoadKeyboardLayout(c.c_str(), KLF_ACTIVATE);


Андрей Сенченко   (2004-08-05 13:15:00) [3]

работает. Код покажи


serg128   (2004-08-05 13:04:00) [4]

Не работает: OemToChar и OemToAnsi


Андрей Сенченко   (2004-08-05 12:55:00) [5]

Перед тем как копировать в буфер - перекодиуй Oem в Ansi


serg128   (2004-08-05 12:35:00) [6]

Работает, но в Excel вставляет в DOS-кодировке вставляет! Не подвкажете, как это побороть?


Андрей Сенченко   (2004-08-05 11:05:00) [7]

Хозяйке на заметку :)


KSergey   (2004-08-05 11:00:00) [8]

Все там путево вставится
Разделяем табуляциями - и все
Можете при помощи блокнота проверить


REA   (2004-08-05 10:59:00) [9]

Tab = #9. Перевод строки #13#10
Вставляет посильнее Ctrl+v


serg128   (2004-08-05 10:54:00) [10]

Да, нужно именно с сохранением табличной структуры


Андрей Сенченко   (2004-08-05 10:46:00) [11]

Ega23 ©   (05.08.04 10:43) [1]

ИМХО так с этими разделителями в Эхель и вставится ... я так понял, что нужно сохранение собственно табличной структуры при копировании в буфер


Ega23   (2004-08-05 10:43:00) [12]

Разделителями её, родимую, разделителями...


Наверх

Титульная страница Поиск, карта сайта Написать письмо