Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Нв семинар.doc
Скачиваний:
3
Добавлен:
10.08.2019
Размер:
119.3 Кб
Скачать

10.11.2. Работа с абзацем

Текущим в тексте форматированного комментария считается абзац, на котором находится курсор.

Свойство property Paragraph: TParaAttributes; определяет характеристики параграфа. Рассмотрим свойства компонента TParaAttributes:

• property Alignment: TAlignment; определяет выравнивание параграфа. Значения:

taLeftJustify - влево;

laCenier - по центру;

taRightJustify - вправо.

• property Firstlndent: Longint; определяет в пикселах абзацный отступ (первой строки параграфа) относительно левого края.

• property Leftlndent: Longint; определяет в пикселах отступ всех строк параграфа от левого края.

• property Numbering: TNumberingStyle; определяет отметку параграфов. Значения:

nsNone - отметка не производится.

nsBullet - отметка производится символом '•'.

• property Rightlndent: Longint; указывает в пикселах отступ от правого края.

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

procedure TFormI.SpeedButton3Click(Sender: TObject) ;

begin

DBRichEdit1.Paragraph.Alignment := taCenter;

end;

11.10.3. Сохранение комментария в файле и считывание комментария из файла

Форматированный комментарий может быть записан в файл и считан из него. Для этой цели применяются методы свойства Lines, procedure SaveToFUe(const FileName: string); procedure LoadFromFile(const FileName: string);

Свойство property PlainText: Boolean; указывает (True), что нужно игнорировать разметку текста (шрифт, цвет и т.д.) при записи из файла в компонент или из компонента в файл. В этом случае текст представляется в виде обычного текстового файла. Значение False (по умолчанию) указывает на необходимость принимать во внимание разметку текста. Например,

RichEdit1.PlainText := True;

RichEdit1.Lines.LoadFromFile(Path);

RichEdit2.PlainText := False;

11.10.4. Работа с выделенным текстом

Фрагмент текста форматированного комментария выделяется так же, как и в популярном текстовом процессоре WinWord; для выделения необходимо установить указатель мыши на начало выделяемого фрагмента, нажать левую кнопку мыши и, не отпуская кнопки, установить указатель мыши на конец фрагмента, после чего кнопку отпустить. Есть и другой способ (при помощи клавиатуры): следует переместить курсор на начало выделяемого фрагмента, нажать кнопку с изображением стрелки влево (вправо) и одновременно - кнопку Shift; движение курсора следует остановить на конце выделяемого фрагмента.

Следующие свойства позволяют определить параметры выделенного фрагмента в тексте комментария:

property SelLength: Integer; возвращает число выделенных символов. property SelStart: Integer; возвращает номер первого выделенного символа в тексте. property SelText: string; возвращает выделенный текст.

Программное изменение одного из указанных свойств изменяет границы выделенного фрагмента.

Весь текст комментария может быть выделен вручную - нажатием на клавиатуре комбинации Ctrl+A, и программно - путем выполнения метода procedure SelectAll;

Свойство property SelAttributes: TTextAttributes; позволяет установить характеристики выделенного текста. Свойства компонента TTextAttributes: . -

• property Color: TColor; определяет цвет выделенного текста;

• property Height: Integer; определяет высоту в пикселах выделенного текста;

• property Pitch: TFontPitch; определяет, имеют ли литеры выделенного текста одинаковую ширину.

Значения:

fpDefault- определяется используемым шрифтом;

fpFixed - одинаковая ширина;

fp Variable - переменная ширина.

• property Protected: Boolean; определяет (True), что текст защищен от изменения пользователем. В случае, если пользователь пытается изменить защищенный текст, вызывается обработчик события OnProtectChange.

В этом обработчике можно снять защиту. Если обработчик указанного события не определен, защищенный текст доступен только на чтение.

• property Size: Integer; определяет высоту в пикселах выделенного текста.

* property Style: TFontStyles; определяет стиль выделенного шрифта. Множество Style может состоять из одного или нескольких значений:

fsBold - жирный;

fsltalic - наклонный;

fs Underline - подчеркнутый;

fsStrikeout - зачеркнутый.

Пример. Установить шрифт, цвет, размер и стиль выделенного текста аналогичными параметрам шрифта, выбранного посредством компонента TFontDialog:

IF FontDialog1.Execute THEN begin

WITH DBRichEditl.SelAttributes do begin

Color := FontDialogl.Font.Color;

Size := FontDialogl.Font.Size;

Name := FontDialogl.Font.Name;

Style := FontDialogl.Font.Style;

END;//with

END;//if

Пример. Сделать выделенный фрагмент текста защищенным:

DBRichEditI.SelAttributes.Protected := True;

Событие

property OnProtectChange: TRichEditProtectChange;

TRichEditProtectChange = procedure(Sender: TObject; StartPos, EndPos: Integer; var AllowChange: Boolean) of object;

наступает, если пользователь пытается изменить защищенный текст. Параметры StartPos и EndPos содержат границы защищенного текста. Установка в True изменяемого параметра AllowChange разрешает изменять защищенный текст.

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

procedure TForm1.DBRichEdit1ProtectChange(Sender: TObject;

StartPos,

EndPos: Integer; var AllowChange: Boolean);

begin

IF MessageDIg('Изменяемый текст являются защищенным. ' + 'Желаете все-таки его изменить?',mtConfirmation,

[mbYes,mbNo],0) = mrYes THEN AllowChange := True;

end;

Выделенный фрагмент текста может быть удален методом procedure ClearSelection;

Метод procedure CopyToClipboard; копирует выделенный текст в буфер обмена Windows.

Метод procedure CutToClipboard; вырезает выделенный текст и вставляет его в буфер обмена Windows.

Метод procedure PasteFromCUpboard; вставляет содержимое буфера обмена Windows в текст комментария, начиная с текущей позиции курсора.

Пример. Определим кнопки "Копировать в буфер обмена", "Вырезать в буфер обмена", "Вставить из буфера обмена" и напишем обработчики события нажатия этих кнопок:

// кнопка "Копировать в буфер обмена"

procedure TForm1.SpeedButton6Click(Sender: TObject);

begin

DBRichEditI.CopyToClipboard;

end;

// кнопка "Вырезать в буфер обмена"

procedure TFormI.SpeedButton7Click(Sender: TObject);

begin

DBRichEditI.CutToClipboard;

end;

// кнопка "Вставить из буфера обмена"

procedure TForm1.SpeedButtonSClick(Sender: TObject);

begin

DBRichEdit1. PasteFromCUpboard;

end;