Коллекция диалогов

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

   
Рассмотрим еще один тип элементов управления приложения 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 для диалогов

Константа для вызова диалогаЕе значениеСписок аргументов
xlDialogOpen1file_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
xlDialogSaveAs5document_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 Кб).

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



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий