Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб.раб.12, 13, 14(лит-ра.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
628 Кб
Скачать
☆

Упражнение 3. Выбор шрифта, его цвета и стиля, параметров границы и фона ячеек

Попробуем изменить шрифт только в ячейке таблицы. Для этого можно использовать объект Font как свойство ячейки, например: ActiveDocument.Tables.Item(Table).Columns.Item(Column).Cells.Item(Row).Range.font.

Есть и другой способ: можно выделить ячейку и работать с объектом Selection.Font. Второй способ выгоден тем, что его можно использовать для изменения шрифта не только в таблице, но и во всех выделенных объектах. Рассмотрим его подробнее. Выделим ячейку таблицы, используя метод Select объекта Cell. В Delphi эта функция будет выглядеть следующим образом:

Function SelectCell(Table:integer;

Row,Column:integer):boolean;

begin

SelectCell:=true;

try

W.ActiveDocument.Tables.Item(Table).Columns.Item

(Column).Cells.Item(Row).Select;

except

SelectCell:=false;

end;

End;

Используем эту функцию для выделения определенной ячейки таблицы. После этого можно приступать к работе со свойством Font объекта Selection. Объект Font аналогичен одноименному объекту в Delphi, но имеет некоторые отличия: цвет шрифта определяется индексом, который может иметь небольшое количество возможных значений, но количество режимов подчеркивания и перечеркивания текста больше, чем для шрифта в Delphi. Так как предполагается, что мы разрабатываем приложения на Delphi для разработки документов в Word, то было бы удобно применить функцию преобразования полей шрифта. Приведу пример такой функции:

Function FontToEFont(font:Tfont;EFont:variant;

ColorIndex:integer):boolean;

begin

FontToEFont:=true;

try

EFont.Name:=font.Name;

if fsBold in font.Style

then EFont.Bold:=True // Жирный

else EFont.Bold:=False; // Тонкий

if fsItalic in font.Style

then EFont.Italic:=True // Наклонный

else EFont.Italic:=False; //

EFont.Size:=font.Size; // Размер

if fsStrikeOut in font.Style

then EFont.Strikethrough:=True // Перечеркнутый

else EFont.Strikethrough:=False; //

if fsUnderline in font.Style

then EFont.Underline:=wdUnderlineSingle // Подчеркивание

else EFont.Underline:=wdUnderlineNone; //

EFont.ColorIndex:=ColorIndex; // Цвет

except

FontToEFont:=false;

end;

End;

Когда объект выделен, можем изменить его шрифт, для этого используем приведенную ниже функцию для объекта Selection:

Function SetFontSelection(font:Tfont;

ColorIndex:integer):boolean;

begin

SetFontSelection:=true;

try

SetFontSelection:=FontToEFont(font,W.Selection.font,ColorIndex);

except

SetFontSelection:=false;

end;

End;

В теле программы замена шрифта будет выглядеть, например, следующим образом:

SelectCell(tab_,2,3); SetFontSelection(Button2.font,5);

Где tab_ - номер таблицы, Button2.font - шрифт кнопки, 5 - индекс цвета.

Как изменить положение таблицы на листе (подвинуть влево, вправо, вверх, вниз)?

Координаты таблицы можно изменить, но эти изменения ограничены по своим возможностям:

две таблицы нельзя выстроить на странице в одну линию, их можно разместить как строки: вторая таблица идет на следующей строке после первой;

есть возможность менять только левый отступ таблицы от края листа. Вертикальное положение определяется строкой, на которой создается таблица. Поэтому чтобы изменить вертикальное положение таблицы, необходимо добавить или удалить строки, расположенные выше таблицы. Левый отступ определяется значением, записанным в поле LeftIndent коллекции Rows таблицы:

W.ActiveDocument.Tables.Item (tab_).Rows.LeftIndent=Left;

где Tab_ - номер таблицы, Left - левый отступ таблицы.

Информация о стиле, цвете и других параметрах ячейки таблицы содержится в элементах коллекции Borders, которые, по сути, представляют собой линии, ограничивающие и пересекающие ячейку. Выбор элемента коллекции производится через константы WdBorderBottom, WdBorderHorizontal, WdBorderLeft, WdBorderRight, WdBorderTop, wdBorderVertical. Цвет сетки определяется индексом, который записывается в поле ColorIndex элемента коллекции. Оператор установки цвета для Delphi выглядит следующим образом, смотрите пример:

W.ActiveDocument.Tables.Item(tab_).Columns.Item(col_).Cells.Item(row_).Borders.Item(wdBorderTop).ColorIndex:=wdDarkRed;

где tab_ - номер таблицы, col_ - номер колонки, row_ - номер строки, wdBorderTop - верхняя граница ячейки, wdDarkRed - цветовой индекс.

Некоторые дополнительные возможности

Мы рассмотрели основные функции работы с ячейками: запись/чтение и установка формата. К этому можно добавить еще те, которые пригодятся на практике. Если мы работаем с областью, то внутри этой области можно обращаться к ячейкам по номеру колонки и столбца относительно начала этой области. Смотрите пример: E.ActiveWorkbook.Sheets.Item[sheet].Range['A5:B10'].Cells.Item[1,1]:=2343. Значение будет записано в ячейку A5.

Для записи формул можно использовать следующий оператор E.ActiveWorkbook.Sheets.Item[sheet].Range['A1'].Formula: ='=$A$4+$A$10'.

Для выделения области листа, заполненного информацией, используйте оператор E.ActiveWorkbook.Sheets.Item[sheet].UsedRange.Select;

Вычислить количество ячеек, столбцов и строк области листа, заполненного информацией, можно, используя следующие операторы:

E.ActiveWorkbook.Sheets.Item[sheet].UsedRange.Count - количество ячеек.

E.ActiveWorkbook.Sheets.Item[sheet].UsedRange.Columns.Count - количество столбцов.

E.ActiveWorkbook.Sheets.Item[sheet].UsedRange.Rows.Count - количество строк.

Для вычисления адреса заполненной области (левая верхняя ячейка - правая нижняя ячейка) можно использовать оператор E.ActiveWorkbook.Sheets.Item[sheet].UsedRange.Address, который возвращает строку, содержащую область адресов.