Работа с объектом Excel.Application. Настройка окон рабочей книги

   
На этом шаге мы рассмотрим некоторые из вариантов настройки окон рабочей книги.

   
Процессор электронных таблиц Excel - удобный инструмент для табличного представления данных и их обработки.
Главной особенностью такой обработки является гибкое применение формул или целых подпрограмм. Причем такой
обработке можно подвергнуть как отдельные ячейки, так и целые массивы данных. При этом немаловажным остается
удобство ввода и отображения информации для пользователя. Рассмотрим одну особенность рабочих книг MS Excel,
которая и служит для этого.

   
Любую рабочую книгу можно отобразить в виде окна, даже не одного окна, а двух и более окон. Для того чтобы
добавить новое окно рабочей книги, используем метод NewWindow объекта WorkBook. Вот процедура,
позволяющая добавить новое окно для уже открытой рабочей книги.

procedure TForm1.Button12Click(Sender: TObject);
//Добавление нового окна для открытой рабочей книги
begin
  WB.NewWindow;
end;

   
После выполнения данной процедуры будет отображено сразу два окна для одной и той же рабочей книги. При этом
нетрудно заметить, что изменения в первом окне тут же отображаются во втором, и наоборот. Если открыто более
одного окна рабочей книги, то эти окна можно разместить в определенном порядке, используя заданные стили - в виде
мозаики, каскадом, расположив в главном окне приложения равномерно по горизонтали или по вертикали.
Дополнительно к этому можно синхронизировать перемещения в окнах как по горизонтали или по вертикали, так
и в обоих направлениях. Для этого предназначен метод Arrange коллекции Windows.
Рассмотрим следующий пример, реализованный в виде процедуры.

procedure TForm1.ComboBox1Change(Sender: TObject);
//Выбор способа расположения окон
begin
    Case ComboBox1.ItemIndex Of
     0: Raspologenie:=7;
     1: Raspologenie:=-4128;
     2: Raspologenie:=1;
     3: Raspologenie:=-4166;
    End;
    WB.Windows.Arrange(ArrangeStyle:= Raspologenie,
        ActiveWorkbook:=True,SyncHorizontal:=True,
        SyncVertical:=True);
end;

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


Рис.1. Результат работы приложения

   
Обычно по умолчанию при создании книги она уже содержит три листа. Поэтому для записи или чтения
информации с листа необходимо сначала выбрать его. Дальше мы рассмотрим, как это делается.

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

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    OpenDialog1: TOpenDialog;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    ListBox1: TListBox;
    Label1: TLabel;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    SaveDialog1: TSaveDialog;
    Button12: TButton;
    Label2: TLabel;
    ComboBox1: TComboBox;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  E:variant;
  WBS:variant;
  WB:variant;
  Raspologenie: Integer; //Расположение окон

procedure TForm1.Button1Click(Sender: TObject);
//Создание объекта Excel.Application
begin
  E:=CreateOleObject('Excel.Application');
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
//Отображение окна приложения Excel
begin
  E.Visible:=CheckBox1.Checked;
end;

procedure TForm1.Button2Click(Sender: TObject);
//Создание рабочей книги по умолчанию
begin
  E.WorkBooks.Add;
end;

procedure TForm1.Button3Click(Sender: TObject);
//Создание рабочей книги на основе шаблона 1
const
  xlWBATChart=-4109;
begin
  E.WorkBooks.add(xlWBATChart);
end;

procedure TForm1.Button4Click(Sender: TObject);
//Создание рабочей книги на основе шаблона 2
begin
  if OpenDialog1.Execute then
    E.WorkBooks.add(OpenDialog1.FileName);
end;

procedure TForm1.Button5Click(Sender: TObject);
//Открытие существующей рабочей книги
begin
  if OpenDialog1.Execute then
    E.WorkBooks.Open(OpenDialog1.FileName);
end;

procedure TForm1.Button6Click(Sender: TObject);
//Открытие существующей рабочей книги в режиме "только для чтения"
begin
  if OpenDialog1.Execute then
    E.WorkBooks.Open(FileName:=OpenDialog1.FileName, ReadOnly:=True);
end;

procedure TForm1.Button7Click(Sender: TObject);
//Получение списка рабочих книг
var
  i:integer;
begin
  WBS:=E.WorkBooks;
  for i:=1 to WBS.Count do
    ListBox1.Items.Add(WBS.Item[i].Name+
       ';  '+WBS.Item[i].FullName);
end;

procedure TForm1.ListBox1Click(Sender: TObject);
//Получение ссылки на выбранную рабочую книгу
begin
  WBS.Item[ListBox1.ItemIndex+1].Activate;
  WB:=WBS.Item[ListBox1.ItemIndex+1];
end;

procedure TForm1.Button8Click(Sender: TObject);
//Сохранение рабочей книги
begin
  WB.Save;
end;

procedure TForm1.Button9Click(Sender: TObject);
//Сохранение рабочей книги под новым именем
begin
  if SaveDialog1.Execute then
    WB.SaveAs(SaveDialog1.FileName);
end;

procedure TForm1.Button10Click(Sender: TObject);
//Проверка сохранения рабочей книги
begin
  if WB.Saved then
    MessageBox(handle,'Документ сохранен!','Внимание!',0)
  else
    MessageBox(handle,'Документ не сохранен!','Внимание!',0);
end;

procedure TForm1.Button11Click(Sender: TObject);
//Закрытие рабочей книги
begin
  WB.Close;
end;

procedure TForm1.Button12Click(Sender: TObject);
//Добавление нового окна для открытой рабочей книги
begin
  WB.NewWindow;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
//Выбор способа расположения окон
begin
    Case ComboBox1.ItemIndex Of
     0: Raspologenie:=7;
     1: Raspologenie:=-4128;
     2: Raspologenie:=1;
     3: Raspologenie:=-4166;
    End;
    WB.Windows.Arrange(ArrangeStyle:= Raspologenie,
        ActiveWorkbook:=True,SyncHorizontal:=True,
        SyncVertical:=True);
end;

end.

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

Таблица 1. Константы, используемые для задания стиля расположения окон

Константа Значение
xlArrangeStyleCascade 7
xlArrangeStyleHorizontal -4128
xlArrangeStyleTiled 1
xlArrangeStyleVertical -4166

   
На следующем шаге мы рассмотрим работу с листами рабочей книги.



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

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