|
LCID
В модуле Excel8 _TLB (Excel97 для Delphi5) во многих свойствах и методах вы можете встретить
параметр или индекс lcid. Теоретически, в MSDN написано: "Indicates that the parameter
is a locale ID (LCID)". Одни (Чарльз Калверт) предлагают в качестве его использовать 0,
как идентификатор языка по умолчанию, другие - результат функции GetUserDefaultLCID.
В некоторых случаях, чаще в связке Windows 2000 + Excel 2000, оба решения не проходят.
Причем, выдается сообщение о попытке "использовать библиотеку старого формата..."
Поэтому, рекомендуем в качестве lcid использовать значение константы LOCALE_USER_DEFAULT.
Например, вот так:
const xlLCID := LOCALE_USER_DEFAULT;
Отображение Excel
Используя раннее связывание
Многие считают, что IExcel.Visible[xlLCID] := true будет достаточно, однако правильнее делать так:
if Assigned(IExcel) then begin // а если он не создан?
IExcel.Visible[xlLCID] := true;
if IExcel.WindowState[xlLCID] = TOLEEnum(Excel8_TLB.xlMinimized) then
IExcel.WindowState[xlLCID] := TOLEEnum(Excel8_TLB.xlNormal);
IExcel.ScreenUpdating[xlLCID] := true;
end;
Зачем такие сложности:
xlMinimized:
Попытайтесь отобразить уже запущенный, а затем минимизированный Excel простым
Visible[xlLCID] := true и вы все поймете - Visible[xlLCID] := true
просто переводит фокус в Excel, но не восстанавливает размеры его окна.
ScreenUpdating:
Данное свойство отвечает за перерисовку окон Microsoft Excel. Попробуйте отобразить Excel
(Visible[xlLCID] := true), выполняющийся в "скрытом" режиме
- основное окно Excel показывается, однако клиентская область остается по-прежнему скрытой.
Используя позднее связывание
if not VarIsEmpty(Excel) then begin // а если он не создан?
Excel.Visible := true;
if Excel.WindowState = TOLEEnum(Excel8_TLB.xlMinimized) then
Excel.WindowState := TOLEEnum(Excel8_TLB.xlNormal);
Excel.ScreenUpdating := true;
end;
Скрытие Excel
Если вы хотите убрать процесс Excel из Панели задач, но оставить его в памяти, чтобы не
тратить время на повторную загрузку, это можно сделать вот так:
Используя раннее связывание
if Assigned(IExcel) then begin
IExcel.Visible[xlLCID] := false;
end;
Используя позднее связывание
if not VarIsEmpty(Excel) then begin
Excel.Visible := false;
end;
|