Шаг 222.
Автоматизация Microsoft Excel. Программирование свойств MS Excel.
Коллекция диалогов

    На этом шаге мы рассмотрим коллекцию диалогов и ее применение.

    Рассмотрим еще один тип элементов управления приложения Excel - элементы коллекции Dialogs. Коллекция Dialogs имеет небольшой список свойств, два из которых это количество элементов коллекции (свойство Count) и ссылка на элементы коллекции (свойство ltem(i:Integer), где i - индекс диалога в коллекции). Чтобы ознакомиться со всем списком и значениями индексов и аргументов диалогов, достаточно открыть справочную систему MS Excel на нужной странице. Здесь мы рассмотрим только общие принципы вызова диалогов из приложений, разработанных в среде Delphi, и несколько примеров их использования.

    Каждый элемент диалога имеет метод и свойства. Свойства элементов коллекции диалогов можно не рассматривать. Для каждого диалога мы располагаем одним методом - Show. Его можно вызывать с аргументами, которые определяются типом самого диалога. Метод Show возвращает значение True, если диалог завершен выбором (например, нажатием кнопки ОК), или False, если пользователь отменил выбор и диалог закрыт. Следующая процедура позволяет получить количество различных диалогов, используемых в Excel.

procedure TForm1.Button4Click(Sender: TObject);
//Определение количества диалогов в Excel
var
  X:Integer;
begin
  X:=E.Dialogs.Count;
  MessageBox(handle,PChar(IntToStr(X)),
   'Количество элементов коллекции диалогов',0);
end;

    На рисунке 1 представлен результат выполнения данной процедуры.


Рис.1. Количество диалогов в Excel составляет несколько сотен

    Рассмотрим вызов метода Show элемента коллекции диалогов. Этот метод можно вызывать как без аргументов, так и с аргументами. Если для конкретного диалога при вызове заданы аргументы, то обычно они служат для настройки некоторых его полей и свойств.

    При вызове метода обычно не используются реальные имена аргументов, указанные в справочной системе. Наименование аргумента представляет собой сочетание символьной строки arg и номера аргумента, например:

   arg1:=2;

    В таблице 1 представлены списки аргументов для двух диалогов. Этот список является частью списка справочной системы.

Таблица 1. Аргументы метода Show для диалогов
Константа для вызова диалога Ее значение Список аргументов
xlDialogOpen 1 file_text, update_links, read_only, format, prot_pwd, write_res_pwd, ignore_rorec, file_origin, custom_delimit, add_logical, editable, file_access, notify_logical, converter
xlDialogSaveAs 5 document_text, type_num, prot_pwd, backup, write_res_pwd, read_only_rec

    Воспользуемся этой информацией, чтобы при вызове диалога открытия документа подставить в поле Имя файла нужное нам значение procedure TForm1.Button2Click(Sender: TObject);

//Задание имени файла в диалоге открытия документа
begin
  E.Dialogs.Item[xlDialogOpen].Show(arg1:='Моя рабочая книга');
end;

    Результат выполнения данного диалога представлен на рисунке 2.


Рис.2. Подставляем имя файла в диалог открытия документа

    Далее вызовем диалог сохранения документа в файле, при этом зададим имя файла непосредственно во время вызова диалога.

procedure TForm1.Button3Click(Sender: TObject);
//Задание имени файла в диалоге сохранения рабочей книги
begin
  E.Dialogs.Item[xlDialogSaveAs].Show(arg1:=
    'Подставляем собственное имя файла');
end;

    Вид диалога показан на рисунке 3.


Рис.3. Подставляем имя файла в диалог сохранения документа

    В заключение приведем полный текст приложения.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj, CheckLst, Spin;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button4: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
const
  xlDialogOpen=1;
  xlDialogSaveAs=5;
var
  E: Variant;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
//Создание объекта Excel и его визуализация
begin
  E:=CreateOleObject('Excel.Application');
  E.Visible:=True;
  //Создание рабочей книги
  E.WorkBooks.Add;
end;

procedure TForm1.Button4Click(Sender: TObject);
//Определение количества диалогов в Excel
var
  X:Integer;
begin
  X:=E.Dialogs.Count;
  MessageBox(handle,PChar(IntToStr(X)),
   'Количество элементов коллекции диалогов',0);
end;

procedure TForm1.Button2Click(Sender: TObject);
//Задание имени файла в диалоге открытия документа
begin
  E.Dialogs.Item[xlDialogOpen].Show(arg1:='Моя рабочая книга');
end;


procedure TForm1.Button3Click(Sender: TObject);
//Задание имени файла в диалоге сохранения рабочей книги
begin
  E.Dialogs.Item[xlDialogSaveAs].Show(arg1:=
    'Подставляем собственное имя файла');
end;

end.
Текст этого приложения можно взять здесь (6,3 Кб).

    На следующем шаге мы рассмотрим пример программирования панели.




Предыдущий шаг Содержание Следующий шаг