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

Вниз

Зацените   Найти похожие ветки 

 
Добра_желатель   (2003-10-08 14:19) [0]

В коде оставлены ремарки для понятности кому как
Процедура копирования содержимого Грида в буфер, для встаdки в Excel

procedure TTT.AppCopyToBufferExecuteTarget(Grid: TDBGrid);
var
s: string;
st: TStringStream;
DS: TDataSet;
BM: TBookmarkStr;
KB: array[0..KL_NAMELENGTH] of Char;

function GetHeaderStr: string;
var
I: Integer;
begin
Result := "";
for I := 0 to Grid.Columns.Count - 1 do
begin
if I > 0 then st.WriteString(#9);//Result := Result + #9;
//Result := Result + Grid.Columns[I].Title.Caption;
st.WriteString(Grid.Columns[I].Title.Caption);
end;
end;

function GetRecordStr: string;
var
I: Integer;
Field: TField;
begin
//Result := #13#10;
st.WriteString(#13#10);
for I := 0 to Grid.Columns.Count - 1 do
begin
if I > 0 then st.WriteString(#9);//Result := Result + #9;
Field := Grid.Columns[I].Field;
if Field.DataType = ftFloat then
//Result := Result + Field.asString
st.WriteString(Field.asString)
else
//Result := Result + Field.DisplayText;
st.WriteString(Field.DisplayText);
end;
end;

function GetFooterStr: string;
var
I: Integer;
begin
//Result := #13#10;
st.WriteString(#13#10);
for I := 0 to Grid.Columns.Count - 1 do
begin
if I > 0 then st.WriteString(#9);//Result := Result + #9;
//Result := Result + Grid.GetFooterValue(I);
st.WriteString(Grid.GetFooterValue(I));
end;
end;

begin
inherited;
st := TStringStream.Create(s);
Screen.Cursor := crHourGlass;
try
if Grid.Columns.Count = 0 then exit;
DS := Grid.DataSource.DataSet;
if Grid.SelectedRows.Count = 0 then
begin
if Grid.SelectedField.DataType = ftFloat then
//s := s + Grid.SelectedField.asString
st.WriteString(Grid.SelectedField.asString)
else
//s := s + Grid.SelectedField.DisplayText;
st.WriteString(Grid.SelectedField.DisplayText);
end
else
begin
{s := }GetHeaderStr;
BM := DS.Bookmark;
DS.DisableControls;
try
DS.First;
while not DS.Eof do
begin
If Grid.SelectedRows.IndexOf(DS.Bookmark) >= 0 then
{s := s + }GetRecordStr;
DS.Next;
end;
finally
DS.Bookmark := BM;
DS.EnableControls;
end;
if dgFooter in Grid.Options then
{s := s + }GetFooterStr;
end;
GetKeyboardLayoutName(KB);
//LoadKeyboardLayout("00000409", KLF_ACTIVATE); // eng
LoadKeyboardLayout("00000419", KLF_ACTIVATE); // rus
try
Clipboard.AsText := st.DataString;//s;
finally
LoadKeyboardLayout(KB, KLF_ACTIVATE);
end;
finally
Screen.Cursor := crDefault;
st.Free;
end;
end;


 
Nerv   (2003-10-08 14:55) [1]

http://delphiworld.narod.ru/base/dbgrid_export_to_excel_or_clipboard.html



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

Форум: "Базы";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.013 c
14-89492
Мазут Береговой
2003-10-09 01:22
2003.10.27
Сегодня праздник! : Календарь рыболова: Сергии Радонежский


4-89656
Aleksei K
2003-08-20 11:06
2003.10.27
VCL формы из DLL


4-89636
Klev
2003-07-15 17:24
2003.10.27
Создание WebBrowser`а средствами технологии COM средствами WinAPI


14-89556
Думкин
2003-09-27 19:03
2003.10.27
Нвосибирск-встреча


1-89276
Aleksandr
2003-10-14 13:42
2003.10.27
Что вызывает окно виндов с сообщением I/O Error 32?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский