Главная страница
    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
1-89317
Андерсон
2003-10-17 11:09
2003.10.27
Нужно скрыть программу при Ctrl+Alt+Del и чтобы......


1-89393
Oleg Barsky
2003-10-15 15:01
2003.10.27
Как узнать ASCII-код символа?


1-89238
race1
2003-10-12 07:53
2003.10.27
canvas


3-89187
pashtet
2003-10-06 12:29
2003.10.27
Запрос на кол-во записей во всех таблицах БД


3-89099
AndrewK
2003-10-08 14:13
2003.10.27
Как написать запрос?





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