Шаг 141.
Автоматизация Microsoft Excel. Работа с ячейками.
Выравнивание текста в ячейке

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

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

    Рассмотрим эти свойства. Следующий программный код задает режимы горизонтального и вертикального выравнивания текста по центру.

procedure TForm1.ComboBox1Change(Sender: TObject);
//Задание горизонтального выравнивания
begin
  case ComboBox1.ItemIndex of
    0: Range.HorizontalAlignment:=-4108; //xlHAlignCenter
    1: Range.HorizontalAlignment:=7;     //xlHAlignCenterAcrossSelection
    2: Range.HorizontalAlignment:=-4117; //xlHAlignDistributed
    3: Range.HorizontalAlignment:=5;     //xlHAlignFill
    4: Range.HorizontalAlignment:=1;     //xlHAlignGeneral
    5: Range.HorizontalAlignment:=-4130; //xlHAlignJustify
    6: Range.HorizontalAlignment:=-4131; //xlHAlignLeft
    7: Range.HorizontalAlignment:=-4152; //xlHAlignRight
  end;
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
//Задание вертикального выравнивания
begin
  case ComboBox2.ItemIndex of
    0: Range.VerticalAlignment:=-4107; //xlHAlignRight
    1: Range.VerticalAlignment:=-4108; //xlVAlignCenter
    2: Range.VerticalAlignment:=-4117; //xlVAlignDistributed
    3: Range.VerticalAlignment:=-4130; //xlVAlignJustify
    4: Range.VerticalAlignment:=-4160; //xlVAlignTop
  end;
end;

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


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

    Приведем полный текст приложения.

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    ComboBox1: TComboBox;
    Label3: TLabel;
    ComboBox2: TComboBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  E:variant;
  Range:variant;

{$R *.dfm}

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

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

procedure TForm1.Edit1Exit(Sender: TObject);
//Определение области
begin
 Range:=E.ActiveSheet.Range[Edit1.Text];
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
//Задание горизонтального выравнивания
begin
  case ComboBox1.ItemIndex of
    0: Range.HorizontalAlignment:=-4108; //xlHAlignCenter
    1: Range.HorizontalAlignment:=7;     //xlHAlignCenterAcrossSelection
    2: Range.HorizontalAlignment:=-4117; //xlHAlignDistributed
    3: Range.HorizontalAlignment:=5;     //xlHAlignFill
    4: Range.HorizontalAlignment:=1;     //xlHAlignGeneral
    5: Range.HorizontalAlignment:=-4130; //xlHAlignJustify
    6: Range.HorizontalAlignment:=-4131; //xlHAlignLeft
    7: Range.HorizontalAlignment:=-4152; //xlHAlignRight
  end;
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
//Задание вертикального выравнивания
begin
  case ComboBox2.ItemIndex of
    0: Range.VerticalAlignment:=-4107; //xlHAlignRight
    1: Range.VerticalAlignment:=-4108; //xlVAlignCenter
    2: Range.VerticalAlignment:=-4117; //xlVAlignDistributed
    3: Range.VerticalAlignment:=-4130; //xlVAlignJustify
    4: Range.VerticalAlignment:=-4160; //xlVAlignTop
  end;
end;

end.
Текст этого приложения можно взять здесь (6,6 Кб).
Примечание. Все возможные значения свойств HorizontalAlignment и VerticalAlignment приведены в процедурах.

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




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