На этом шаге мы рассмотрим некоторые из вариантов настройки окон рабочей книги.
Процессор электронных таблиц 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.
Константа | Значение |
---|---|
xlArrangeStyleCascade | 7 |
xlArrangeStyleHorizontal | -4128 |
xlArrangeStyleTiled | 1 |
xlArrangeStyleVertical | -4166 |
На следующем шаге мы рассмотрим работу с листами рабочей книги.