Показать сообщение отдельно
  #10  
Старый 09.04.2021, 16:52
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Чтобы изменить язык менюшки, надо смотреть исходники 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 пунктов меню задаётся соответствующий тип экспорта для этого пункта меню).
Изображения
Тип файла: jpg Экспорт2021-04-09_165059.jpg (37.4 Кбайт, 2 просмотров)
Ответить с цитированием