Перейти к содержимому

Memo как узнать позиции табуляции

  • автор:

Программирование на Delphi

Мне необходимо обновлять текущую строку в во время перемещения по ним с помощью курсорных клавиш.

Вам повезло. Совсем недавно мне пришлось помучиться с этой задачкой. Я переместил функции в отдельный модуль. Для тестирования кода создайте пустую форму с одним компонентом Tmemo.

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

Данный пример отображает в заголовке текущие координаты курсора (столбец, строка).

Я не стал отображать координаты, когда текст выбран, поскольку не был уверен как этим оперировать без рассогласования.

Сообщайте мне о любых возникающих проблемах, но я уверен что это должно работать как положено.

unit Unit1; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; procedure Memo1Change(Sender: TObject); procedure Memo1Click(Sender: TObject); procedure Memo1Enter(Sender: TObject); procedure Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Memo1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Memo1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private < Private declarations >function GetLineIndex: Word; function GetStrInsertIndex: Word; procedure GetCursorCoord; public < Public declarations >end; var Form1: TForm1; implementation function TForm1.GetLineIndex: Word; begin Result := SendMessage(Memo1.handle, EM_LINEFROMCHAR, memo1.selstart, 0); end; function TForm1.GetStrInsertIndex: word; begin GetStrInsertIndex := memo1.Selstart - SendMessage(Memo1.handle, EM_LINEINDEX, GetLineIndex, 0) end; procedure TForm1.GetCursorCoord; var LineIndex: word; LineChar: byte; SelSt: word; begin SelSt := Memo1.selstart; LineIndex := GetLineIndex; Linechar := GetStrInsertIndex; if Memo1.seltext > '' then Caption := 'Выбранный текст' else Caption := 'Колонка ' + inttostr(LineChar + 1) + ' , ' + 'Строка ' + inttostr(Lineindex + 1); end; procedure TForm1.Memo1Change(Sender: TObject); begin GetCursorCoord; end; procedure TForm1.Memo1Click(Sender: TObject); begin GetCursorCoord; end; procedure TForm1.Memo1Enter(Sender: TObject); begin GetCursorCoord; end; procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin GetCursorCoord; end; procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin GetCursorCoord; end; procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin GetCursorCoord; end; procedure TForm1.Memo1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin GetCursorCoord; end; end.

Компоненты и Классы — TMemo и TRichEdit

Memo со своими шрифтами

Memo как узнать позиции табуляции

Компоненты Memo и RichEdit (см. пример на рис. 3.7) являются окнами редактирования многострочного текста. Они так же, как и окно Edit, снабжены многими функциями, свойственными большинству редакторов. В них предусмотрены типичные комбинации «горячих» клавиш: Ctrl-C — копирование выделенного текста в буфер обмена Clipboard (команда Copy ), Ctrl-X — вырезание выделенного текста в буфер Clipboard (команда Cut ), Ctrl-V — вставка текста из буфера Clipboard в позицию курсора (команда Paste ), Ctrl-Z — отмена последней команды редактирования.

В компоненте Memo формат (шрифт, его атрибуты, выравнивание) одинаков для всего текста и определяется свойством Font. Если вы сохраните в файле текст, введенный или отредактированный пользователем, то будет создан текстовый файл, содержащий только символы и не содержащий элементов форматирования. При последующем чтении этого файла в Memo формат будет определяться текущим состоянием свойства Font компонента Memo, а не тем, в каком формате ранее вводился текст.

Компонент RichEdit работает с текстом в обогащенном формате RTF. При желании изменить атрибуты вновь вводимого фрагмента текста вы можете задать свойство SelAttributes. Это свойство типа TTextAttributes, которое в свою очередь имеет подсвойства: Color (цвет), Name (имя шрифта), Size (размер), Style (стиль) и ряд других. Например, введите на форму компонент RichEdit, диалог выбора шрифта FontDialog (см. раздел 8.4) и кнопку Button, которая позволит пользователю менять атрибуты текста. В обработчик щелчка кнопки можно было бы ввести текст:

if FontDialog1.Execute then with RichEdit1.SelAttributes do begin Color:=FontDialog1.Font.Color; Name:=FontDialog1.Font.Name; Size:=FontDialog1.Font.Size; Style:=FontDialog1.Font.Style; end; RichEdit1.SetFocus;

В приведенном коде присваивается поочередно значение каждого свойства. Но этот текст можно кардинально сократить, воспользовавшись тем, что объекты SelAttributes и Font совместимы по типу. Поэтому можно присвоить сразу все свойства одного объекта другому:

if FontDialog1.Execute then RichEdit1.SelAttributes.Assign(FontDialog1.Font); RichEdit1.SetFocus;

Запустите приложение и увидите, что вы можете менять атрибуты текста, выполняя отдельные фрагменты различными шрифтами, размерами, цветами, стилями. Устанавливаемые атрибуты влияют на выделенный текст или, если ничего не выделено, то на атрибуты нового текста, вводимого начиная с текущей позиции курсора (позиция курсора определяется свойством SelStart).

В компоненте имеется также свойство DefAttributes, содержащее атрибуты по умолчанию. Эти атрибуты действуют до того момента, когда изменяются атрибуты в свойстве SelAttributes.

Но значения атрибутов в DefAttributes сохраняются и в любой момент эти значения могут быть методом Assign присвоены атрибутам свойства SelAttributes, чтобы вернуться к прежнему стилю.

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

За выравнивание, отступы и т.д. в пределах текущего абзаца отвечает свойство Paragraph типа TParaAttributes. Этот тип в свою очередь имеет ряд свойств:

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

RichEdit1.Paragraph.Alignment:=taLeftJustify; // Влево RichEdit1.Paragraph.Alignment:=taCenter; // По центру RichEdit1.Paragraph.Alignment:=taRightJustify;// Вправо 

Следующий оператор приведет к тому, что текущий абзац будет отображаться как список, т.е. с маркерами:

RichEdit1.Paragraph.Numbering:=nsBullet;

Уничтожение списка в текущем абзаце осуществляется оператором

RichEdit1.Paragraph.Numbering:=nsNone;

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

if (ABullet.Checked) then RichEdit1.Paragraph.Numbering:=nsNone else RichEdit1.Paragraph.Numbering :=nsBullet; ABullet.Checked:=not ABullet.Checked;

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

Свойства TabCount и Tab имеют смысл при вводе текста только при значении свойства компонента WantTabs = true. Это свойство разрешает пользователю вводить в текст символ табуляции. Если WantTabs = false, то нажатие пользователем клавиши табуляции просто переключит фокус на очередной компонент и символ табуляции в текст не введется.

Мы рассмотрели основные отличия Memo и RichEdit. Теперь остановимся на общих свойствах этих окон редактирования.

Свойства Alignment и WordWrap имеют тот же смысл, что, например, в метках, и определяют выравнивание текста и допустимость переноса длинных строк. Установка свойства ReadOnly в true задает текст только для чтения. Свойство MaxLength определяет максимальную длину вводимого текста. Если MaxLength = 0, то длина текста не ограничена. Свойства WantReturns и WantTab определяют допустимость ввода пользователем в текст символов перевода строки и табуляции.

Свойство ScrollBars определяет наличие полос прокрутка текста в окне. По умолчанию ScrollBars = ssNone, что означает их отсутствие. Пользователь может в этом случае перемещаться по тексту только с помощью курсора. Можно задать свойству ScrollBars значения ssHorizontal, ssVertical или ssBoth, что будет соответственно означать наличие горизонтальной, вертикальной или обеих полос прокрутки.

В качестве примера на рис. 3.8 приведен пример текстового редактора, использующего описанные выше свойства компонента RichEdit. Текст в окне редактора частично поясняет атрибуты шрифта, использованные при его написании.

Основное свойство окон Memo и RichEditLines, содержащее текст окна в виде списка строк и имеющее тип TStrings. Начальное значение текста можно установить в процессе проектирования, нажав кнопку с многоточием около свойства Lines в окне Инспектора Объектов. Перед вами откроется окно редактирования списков строк, представленное на рис. 3.9. Вы можете редактировать или вводить текст непосредственно в этом окне, или нажать кнопку CodeEditor и работать в обычном окне Редактора Кода. В этом случае, завершив работу с текстом, выберите из контекстного меню, всплывающего при щелчке правой кнопкой мыши, команду Close Page и ответьте утвердительно на вопрос, хотите ли вы сохранить текст в соответствующем свойстве окна редактирования.

В Delphi 1 аналогичное окно имеет еще кнопки, позволяющие загрузить текст из файла или сохранить его в файле.

Во время выполнения приложения вы можете заносить текст в окно редактирования с помощью методов свойства Lines типа TStrings. Этот тип широко используется в свойствах многих компонентов и его описание вы можете найти в во встроенной справке Delphi. Здесь коротко укажем только на его основные свойства и методы, используемые в свойстве Lines.

Весь текст, представленный одной строкой типа String, внутри которой используются разделители типа символов возврата каретки и перевода строки, содержится в свойстве Text.

Доступ к отдельной строке текста вы можете получить с помощью свойства Strings[Index: Integer]. Индексы, как и везде в Delphi, начинаются с 0. Так что Memo1.Lines.Strings[0] — это текст первой строки. Учтите, что если окно редактирования изменяется в размерах при работе с приложением и свойство WordWrap = true, то индексы строк будут изменяться при переносах строк, так что в этих случаях индекс мало о чем говорит.

Свойство только для чтения Count указывает число строк в тексте.

Для очистки текста в окне надо выполнить процедуру Clear. Этот метод относится к самому окну, а не к его свойству Lines.

Для занесения новой строки в конец текста окна редактирования можно воспользоваться методами Add или Append свойства Lines. Для загрузки текста из файла применяется метод LoadFromFile. Сохранение текста в фале осуществляется методом SaveToFile.

Пусть, например, в вашем приложении имеется окно редактирования Edit1, в котором пользователь вводит имя сотрудника, и есть кнопка, при щелчке на которой в окно Memo1 должна занестись шапка характеристики этого сотрудника, после чего пользователь может заполнить текст характеристики.

Обработчик щелчка на кнопке может иметь вид:

Memo1.Clear; Memo1.Lines.Add ('Х А Р А К Т Е Р И С Т И К А'); Memo1.Lines.Add('Сотрудник '+Edit1.Text) ;. Memo1.SetFocus;

Загрузка в окно Memo1 текста из файла (например, хранящейся в файле характеристики сотрудника) может осуществляться командой

Memo1.Lines.LoadFromFile ('text.txt');

Сохранение текста в файле может осуществляться командой

Memo1.Lines.SaveToFile('text.txt');

Свойство SelStart компонентов Memo и RichEdit указывает позицию курсора в тексте или начало выделенного пользователем текста. Свойство CaretPos указывает на запись, поле X которой содержит индекс символа в строке, перед которым расположен курсор, а поле Y — индекс строки, в которой находится курсор (встроенная справка Delphi утверждает другое — что свойство CaretPos содержит координаты курсора в пикселях; но, к счастью, это не так). Таким образом, учитывая, что индексы начинаются с 0, значения Memo1.CaretPos.Y+1 и Memо1.CaretPos.X+1 определяют соответственно номер строки и символа в ней, перед которым расположен курсор. В редакторе на рис. 3.8 именно эти значения (только не для Memo, а для RichEdit) использованы, чтобы отображать в строке состояния (см. раздел 7.6) позицию курсора.

Memo как узнать позиции табуляции

В приведенном коде присваивается поочередно значение каждого свойства. Но этот текст можно кардинально сократить, воспользовавшись тем, что объекты SelAttributes и Font совместимы по типу. Поэтому можно присвоить сразу все свойства одного объекта другому:

if FontDialog1.Execute then
RichEdit1.SelAttributes.Assign(FontDialog1.Font);
RichEdit1.SetFocus;

Запустите приложение и увидите, что вы можете менять атрибуты текста, выполняя отдельные фрагменты различными шрифтами, размерами, цветами, стилями. Устанавливаемые атрибуты влияют на выделенный текст или, если ничего не выделено, то на атрибуты нового текста, вводимого начиная с текущей позиции курсора (позиция курсора определяется свойством SelStart).

В компоненте имеется также свойство DefAttributes, содержащее атрибуты по умолчанию. Эти атрибуты действуют до того момента, когда изменяются атрибуты в свойстве SelAttributes.

Но значения атрибутов в DefAttributes сохраняются и в любой момент эти значения могут быть методом Assign присвоены атрибутам свойства SelAttributes, чтобы вернуться к прежнему стилю.

Свойство DefAttributes доступно только во время выполнения. Поэтому его атрибуты при необходимости можно задавать, например, в обработчике события OnCreate (дважды щелкнуть по пустой форме во время создания приложения).

За выравнивание, отступы и т.д. в пределах текущего абзаца отвечает свойство Paragraph типа TParaAttributes. Этот тип в свою очередь имеет ряд свойств:

Определяет выравнивание текста. Может принимать значения taLeftJustify (влево), taCenter (по центру) или taRightJustify (вправо).

FirstIndent

Число пикселей отступа красной строки.

Управляет вставкой маркеров, как в списках. Может принимать значения nsNone — отсутствие маркеров, nsBullet — маркеры ставятся.

Отступ в пикселях от левого поля.

RightIndent

Отступ в пикселях от правого поля.

Количество позиций табуляции.

Значения позиций табуляции в пикселях.

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

RichEdit1.Paragraph.Alignment:=taLeftJustify; // Влево
RichEdit1.Paragraph.Alignment:=taCenter; // По центру
RichEdit1.Paragraph.Alignment:=taRightJustify;// Вправо

Следующий оператор приведет к тому, что текущий абзац будет отображаться как список, т.е. с маркерами:

RichEdit1.Paragraph.Numbering:=nsBullet;

Уничтожение списка в текущем абзаце осуществляется оператором

RichEdit1.Paragraph.Numbering:=nsNone;

Свойства TabCount и Tab имеют смысл при вводе текста только при значении свойства компонента WantTabs = true. Это свойство разрешает пользователю вводить в текст символ табуляции. Если WantTabs = false, то нажатие пользователем клавиши табуляции просто переключит фокус на очередной компонент и символ табуляции в текст не введется.

Мы рассмотрели основные отличия Memo и RichEdit. Теперь остановимся на общих свойствах этих окон редактирования.

Свойства Alignment и WordWrap имеют тот же смысл, что, например, в метках, и определяют выравнивание текста и допустимость переноса длинных строк. Установка свойства ReadOnly в true задает текст только для чтения. Свойство MaxLength определяет максимальную длину вводимого текста. Если MaxLength = 0, то длина текста не ограничена. Свойства WantReturns и WantTab определяют допустимость ввода пользователем в текст символов перевода строки и табуляции.

Свойство ScrollBars определяет наличие полос прокрутка текста в окне. По умолчанию ScrollBars = ssNone, что означает их отсутствие. Пользователь может в этом случае перемещаться по тексту только с помощью курсора. Можно задать свойству ScrollBars значения ssHorizontal, ssVertical или ssBoth, что будет соответственно означать наличие горизонтальной, вертикальной или обеих полос прокрутки.

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

Основное свойство окон Memo и RichEdit — Lines, содержащее текст окна в виде списка строк и имеющее тип TStrings. Начальное значение текста можно установить в процессе проектирования, нажав кнопку с многоточием около свойства Lines в окне Инспектора Объектов. Перед вами откроется окно редактирования списков строк, представленное на рисунке ниже. Вы можете редактировать или вводить текст непосредственно в этом окне, или нажать кнопку CodeEditor и работать в обычном окне Редактора Кода. В этом случае, завершив работу с текстом, выберите из контекстного меню, всплывающего при щелчке правой кнопкой мыши, команду Close Page и ответьте утвердительно на вопрос, хотите ли вы сохранить текст в соответствующем свойстве окна редактирования.

В Delphi 1 аналогичное окно имеет еще кнопки, позволяющие загрузить текст из файла или сохранить его в файле.

Во время выполнения приложения вы можете заносить текст в окно редактирования с помощью методов свойства Lines типа TStrings. Этот тип широко используется в свойствах многих компонентов и его описание вы можете найти в во встроенной справке Delphi. Здесь коротко укажем только на его основные свойства и методы, используемые в свойстве Lines.

Весь текст, представленный одной строкой типа String, внутри которой используются разделители типа символов возврата каретки и перевода строки, содержится в свойстве Text.

Доступ к отдельной строке текста вы можете получить с помощью свойства Strings[Index: Integer]. Индексы, как и везде в Delphi, начинаются с 0. Так что Memo1.Lines.Strings[0] — это текст первой строки. Учтите, что если окно редактирования изменяется в размерах при работе с приложением и свойство WordWrap = true, то индексы строк будут изменяться при переносах строк, так что в этих случаях индекс мало о чем говорит.

Свойство только для чтения Count указывает число строк в тексте.

Для очистки текста в окне надо выполнить процедуру Clear. Этот метод относится к самому окну, а не к его свойству Lines.

Для занесения новой строки в конец текста окна редактирования можно воспользоваться методами Add или Append свойства Lines. Для загрузки текста из файла применяется метод LoadFromFile. Сохранение текста в фале осуществляется методом SaveToFile.

Пусть, например, в вашем приложении имеется окно редактирования Edit1, в котором пользователь вводит имя сотрудника, и есть кнопка, при щелчке на которой в окно Memo1 должна занестись шапка характеристики этого сотрудника, после чего пользователь может заполнить текст характеристики.

Обработчик щелчка на кнопке может иметь вид:

Memo1.Clear;
Memo1.Lines.Add ('Х А Р А К Т Е Р И С Т И К А');
Memo1.Lines.Add('Сотрудник '+Edit1.Text) ;.
Memo1.SetFocus;

Загрузка в окно Memo1 текста из файла (например, хранящейся в файле характеристики сотрудника) может осуществляться командой

Memo1.Lines.LoadFromFile ('text.txt');

Сохранение текста в файле может осуществляться командой

Memo1.Lines.SaveToFile('text.txt');

Свойство SelStart компонентов Memo и RichEdit указывает позицию курсора в тексте или начало выделенного пользователем текста. Свойство CaretPos указывает на запись, поле X которой содержит индекс символа в строке, перед которым расположен курсор, а поле Y — индекс строки, в которой находится курсор (встроенная справка Delphi утверждает другое — что свойство CaretPos содержит координаты курсора в пикселях; но, к счастью, это не так). Таким образом, учитывая, что индексы начинаются с 0, значения Memo1.CaretPos.Y+1 и Memо1.CaretPos.X+1 определяют соответственно номер строки и символа в ней, перед которым расположен курсор. В редакторе на рис. 3.8 именно эти значения (только не для Memo, а для RichEdit) использованы, чтобы отображать в строке состояния (компонент StatusBar, вкладка Win 32) позицию курсора.

Перечислим все основные свойства этих компонентов:

Свойства BorderStyle, CanUndo, HideSelection, MaxLentgh, Modified, OEMConvert, OnChange, Readonly, SelLength, SelStart и SelText аналогичны соответствующим свойствам класса TEdit. Свойство WordWrap аналогично свойству TLabel. WordWrap. Другие специфичные свойства представлены ниже:

property CaretPos: TPoint;

Содержит координаты мигающего текстового курсора относительно границ клиентской области компонента (только для Delphi 4. 6)

property Lines: TStrings; TScrollStyle = (ssNone, ssHorizontal, ssVertical, ssBoth) ; property ScrollBars: Tscroll-Style;

Содержит строки текста Определяет наличие в окне редактора полос прокрутки: ssNone — нет полос;ssHorizontal -есть горизонтальная полоса; ssVertical — есть вертикальная полоса; ssBoth — есть обе полосы

property WantReturns: Boolean;

Если содержит True, нажатие Enter вызывает переход на новую строку, в противном случае обрабатывается системой. Для перехода на новую строку в этом случае следует нажать Ctrl+Enter

property WantTabs: Boolean;

Если содержит True, нажатие Tab вызывает ввод в текст символа табуляции, в противном случае — обрабатывается системой. Для ввода символа табуляции в этом случае следует нажать Ctrl+Tab

Замечу, что, если свойство ScrollBars содержит ssHorizontal или ssBoth, свойство wordwrap игнорируется, и длинные строки будут отсекаться границами компонента без переноса текста на следующую строку.

Помимо обычных шрифтовых свойств CharSet, Color, Height, Name, Pitch, Size И Style ( см . класс TFont) объект TTextAttributes содержит также свойства consistentAttributes и protected. Первое доступно только для чтения и содержит набор текстовых характеристик, общих как для всего текста, так и для его выделенной части. Свойство protected защищает весь текст или его части от редактирования. Попытка изменить текст, имеющий атрибут protected, вызывает обработчик события OnProtectChange, который может разрешить или запретить изменения. По умолчанию изменения запрещены.

Для каждого текстового абзаца создается объект класса Text Attributes, в котором сохраняются атрибуты абзаца. Эти атрибуты доступны через следующие свойства класса T Text Attributes:

property Alignment: TAlignment;

Определяет горизонтальное выравнивание текста абзаца относительно границ компонента

property Firstlndent: Longint;

Указывает отступ текста абзаца в пикселях от предыдущего абзаца

property Leftlndent: Longint;

Указывает отступ текста абзаца в пикселях от левого края компонента

property Numbering: TNum

Указывает, надо ли вставлять слева от абзаца символы списка. Если содержит nsBullet, символы списка вставляются

Указывает отступ текста абзаца в пикселях от правого края компонента

property Tab[Index: Byte] : Longing;

Для табулостопа с индексом index содержит его позицию в пикселях от левого края компонента

property TabCount: Irteger;

Определяет количество табулостопов в строке абзаца

Свойства класса TRichEdit

Определяет шрифтовые атрибуты всего текста

TConversionClass = class of TConversion;

property DefaultConverter: TConversionClass;

Свойство указывает класс конвертора, использующегося для преобразования текстовых форматов причтении или записи текста. По умолчанию нет преобразования

Определяет, будет ли редактор автоматически вставлять полосы прокрутки, если текст отсекается границами компонента. Игнорируется, если scrollBars содержит ssNone

Указывает, будет ли убираться выделение текста, если компонент потеряет фокус ввода

property Lines: TStrings;

Содержит набор строк текста. С помощью его методов LoadFromFile и SaveToFile компонент может читать текст из файла или записывать в него текст

property PageRect: TRect;

Указывает размеры страницы при печати на принтере

Содержит атрибуты текущего абзаца, т. е. абзаца с выделением или с текстовым курсором. Программа не может изменить свойство paragraph, но может изменить свойства связанного с ним абзаца

property PlainText: Boolean;

Запрещает/разрешает записывать в файл или читать из него служебную информацию формата RTF (True -запрещает)

Определяет шрифтовые атрибуты выделенного текста

property SelLength: Integer;

Задает длину в символах выделенной части текста

property SelStart: Integer;

Определяет номер первого символа выделенной части текста от начала текста (нумерация символов начинается с 0). Если нет выделения, указывает символ, перед которым располагается текстовый курсор

property SelText: String;

Содержит выделенный текст. Установка нового значения SelText заменяет выделенный текст на новый, а если нет выделения — вставляет его в позицию курсора

TSearchTypes = set of TSear

SearchStr: String; StartPos,

Length: Integer; Options: TSear

Удаляет весь текст

Ищет в тексте строку SearchStr и возвращает индекс первого ее символа при удачном поиске: StartPos — начало поиска:

Length-длина строки, options указывает, будет ли поиск идти по целым словам и надо ли учитывать высоту букв

PChar; BufSize: Integer): Integer;

Копирует не более BufSize символов выделенного текста в буфер Buffer и возвращает количество скопированных символов

procedure Print(const Caption:

Форматирует текст по границам листа бумаги и печатает его на умалчиваемом принтере, caption определяет заголовок печати

TConversionClass = class of TConversion; class procedure RegisterConver-

String; AConversionClass: TConversionClass) ;

Устанавливает соответствие между расширением файла AExtension и конвертором текста

Для компонента определены такие события:

procedure(Sender: TObject; Start Pos, EndPos: Integer; var AllowChange: Boolean) of object property OnProtectChange: TRichE

Возникает при попытке изменить текст, имеющий атрибут Protected: StartPos, EndPos — соответственно начальная и конечная позиции изменяемого текста. В параметре AllowChange обработчик возвращает True, если можно изменять текст

dure (Sender: TObject; Rect:

TRect) of object property OnResizeRequest: TRichEditResizeEvent;

Событие связано с перерисовкой текста из-за изменения размеров шрифта. Rect содержит прямоугольник, который будет

TRichEditSaveClipboard = procedure(Sender: TObject; NumObjects, NumChars: Integer; var

SaveClipboard: Boolean) of object;

Возникает в момент уничтожения компонента и извещает его о том, что в clipboard осталась информация, которая помещена им. Если

обработчик вернет False в параметре Save clipboard, буфер обмена будет очищен

property OnSelectionChange: TNotifyEvent;

Возникает при изменении выделенного текста

Создание и изменение позиций табуляции

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

Когда вы вставляете в текстовое поле в Publisher знак табулиента, на линейке в верхней части рабочей области появляется его маркер.

Типы табулиок

Чтобы найти все типы табуляторов, щелкните селектор табулятора в углу между горизонтальной и вертикальной линейками. Когда появится нужная вам табула, щелкните на линейке место, куда вы хотите ее разместить.

Какой тип табулили нужно использовать?

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

Позиция табулики по центру задает позицию в середине текста. При вводе текст центрируется по этой позиции.

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

Числа выравниваются в позиции табуляции по десятичному разделителю. Вне зависимости от количества разрядов десятичный разделитель остается в одной позиции. (Выравнивать так можно только числа. Табуляцию «Поразрядный» нельзя использовать для выравнивания чисел вокруг другого символа, например дефиса или символа амперанда.)

Дважды щелкните горизонтальную линейку в том месте, где нужно нажать кнопку табулки, и откроется диалоговое окно «Табулка». Здесь можно установить табулю с определенными измерениями, а также добавить перед табулю табулю руководители.

Изменение стандартных табулиок

Нажмите кнопку запуска диалогового окна

  1. Щелкните текстовое поле.
  2. На ленте«Главная» нажмите кнопку запуска диалогового окна «Абзац».
  3. В поле «По умолчанию» введите расстояние между ними.

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

Создание новой вкладки

  1. Выделите абзацы, которые нужно изменить.
  2. Выполните одно из указанных ниже действий.
    • Чтобы создать новую левую табуальную линию, щелкните на горизонтальной линейке место, где нужно создать ее. На линейке появится маркер остановки табулиента.
    • Чтобы создать новую правую, центрную или десятичной табуляцию, щелкните селектор табуляцию (квадрат, расположенный слева от горизонтальной линейки и в верхней части вертикальной линейки), пока не отобразит нужный тип табуляции. Затем щелкните место на горизонтальной линейке, где нужно щелкнуть место.
  3. Щелкните текст в том месте, куда вы хотите вставить вкладку, и нажмите клавишу TAB.

Примечание: В ячейке таблицы щелкните место, куда нужно вставить вкладку, и нажмите CTRL+TAB.

Удаление позиции табуляции

Нажмите кнопку запуска диалогового окна

  1. Выделите абзацы, которые нужно изменить.
  2. Выполните одно из указанных ниже действий.
    • Чтобы удалить одну из них для абзацев с одинаковыми настройками табулиента, перетащите маркер остановки табулиента за горизонтальную линейку.
    • Чтобы удалить все вкладки из выбранных абзацев, на вкладке «Главная» нажмите кнопку запуска диалогового окна «Абзац», выберите пункт «Табулка» и нажмите кнопку «Очистить все».

Добавление тире, точек или линий перед точкой табуличек

  1. Щелкните абзац, содержащий табулику, которую вы хотите изменить.
  2. На горизонтальной линейке дважды щелкните маркер остановки табулиента.
  3. В области «Руководитель»выберите нужный стиль и нажмите кнопку «ОК».

Настройка одной или более остановок табулицы с заданным размером

Нажмите кнопку запуска диалогового окна

  1. Выделите абзацы, которые нужно изменить.
  2. На ленте«Главная» нажмите кнопку запуска диалогового окна «Абзац».
  3. Перейдите на вкладку «Вкладки».
  4. Для каждой позиции табулики, которая вы хотите вставить, введите ее позицию в области «Позиции табули», а затем нажмите кнопку «Установить».
  5. В группах Выравнивание и Заполнитель выберите нужные параметры, а затем нажмите кнопку ОК.

Facebook LinkedIn Электронная почта

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *