Чтобы изменить язык менюшки, надо смотреть исходники EhLib. Тут нужно найти модуль, где эта штука прописана (скорее всего файл должен иметь в своём имени слово "grid"). В своё время я на древней версии EhLib русифицировал окно прямой печати из таблицы. Так что и у Вас вполне может получиться. Это не сложно, главное, найти файл pas (скорее всего pas, но не факт), где это прописано.
Что же касается экспорта, то вот как сделано у меня:
Код:
{Процедура экспорта из грида g в файл формата Format:
0 = TXT
1 = RTF
2 = HTML
3 = CSV
4 = Excel
5 = Unicode
Действия после экспорта задаются в Act:
0 - ничего не делать;
1 - открыть файл;
2 - выдать запрос открытия;
3 - открыть папку с файлом.
Если в гриде есть выделенные строки (мультиселекция), то экспортируются только они, иначе - выводится весь набор данных.
}
procedure Tdm.ExpFromGrid(g: TDBGridEh; Format: Integer; Act: Integer);
var all: boolean;
begin
if g.DataSource.DataSet.RecordCount = 0 then
begin
PlaySound(PChar('SYSTEMEXCLAMATION'), 0, SND_ASYNC);
Application.MessageBox('В наборе данных нет ни одной записи,' + #13 +
'поэтому экспорт невозможен.', ' Предупреждение', MB_ICONWARNING + MB_OK);
exit;
end;
if g.SelectedRows.Count > 1 then all := false else all := true;
sd1.FileName := '';
case Format of
0: begin
sd1.Filter := 'Текстовые файлы|*.txt';
sd1.DefaultExt := 'txt';
if sd1.Execute then SaveDBGridEhToExportFile(TDBGridEhExportAsText, g, sd1.FileName, all);
end;
1: begin
sd1.Filter := 'Файлы формата RTF|*.rtf';
sd1.DefaultExt := 'rtf';
if sd1.Execute then SaveDBGridEhToExportFile(TDBGridEhExportAsRTF, g, sd1.FileName, all);
end;
2: begin
sd1.Filter := 'Файлы Html|*.html';
sd1.DefaultExt := 'html';
if sd1.Execute then SaveDBGridEhToExportFile(TDBGridEhExportAsHTML, g, sd1.FileName, all);
end;
3: begin
sd1.Filter := 'Файлы CSV|*.csv';
sd1.DefaultExt := 'csv';
if sd1.Execute then SaveDBGridEhToExportFile(TDBGridEhExportAsCSV, g, sd1.FileName, all);
end;
4: begin
sd1.Filter := 'Файлы Excel|*.xls';
sd1.DefaultExt := 'xls';
if sd1.Execute then SaveDBGridEhToExportFile(TDBGridEhExportAsXLS, g, sd1.FileName, all);
end;
5: begin
sd1.Filter := 'Текстовые файлы|*.txt';
sd1.DefaultExt := 'txt';
if sd1.Execute then SaveDBGridEhToExportFile(TDBGridEhExportAsUnicodeText, g, sd1.FileName, all);
end;
end;
case Act of
0: exit; //Вариант "ничего не делать".
1: ShellExecute(Handle, nil, PChar(sd1.FileName), nil, nil, SW_SHOWNORMAL); //Вариант "открыть файл".
2: begin
PlaySound(PChar('SYSTEMEXCLAMATION'), 0, SND_ASYNC);
if Application.MessageBox('Данные были успешно экспортированы в файл.' + #13 + 'Открыть этот файл ?',
' Подтверждение действия', MB_ICONQUESTION + MB_OKCANCEL ) = mrOK then
ShellExecute(Handle, nil, PChar(sd1.FileName), nil, nil, SW_SHOWNORMAL);
end;
3: begin //Вариант "открыть папку".
ShellExecute(Handle, 'explore', PChar(ExtractFilePath(sd1.FileName)),
end;
end;
end;
А это вызов процедуры экспорта из окна, содержащего грид:
Код:
procedure Tfm_komp.mExpToTXTClick(Sender: TObject);
begin
dm.ExpFromGrid(fg, TMenuItem(Sender).Tag, fm_param._cbAfterExport.itemIndex);
end;
(тут в свойстве Tag пунктов меню задаётся соответствующий тип экспорта для этого пункта меню).
|