Class TEXTEDIT

Name

TEXTEDIT  --  Класс предназначен для работы с текстом. Чтение/запись в файл или строку, редактирование данных, манипуляции с блоками, форматирование текста. TEXTEDIT используется как базовый класс для функции memoedit() и для класса MEDIT.

Synopsis

 TextEditNew(<Lrow>, <Lcol>, <Rrow>, <Rcol>, [<color>]) 	--> new TEXTEDIT object

Description

Класс предназначен для работы с текстом. Чтение/запись в файл или строку, редактирование данных, манипуляции с блоками, форматирование текста. TEXTEDIT используется как базовый класс для функции memoedit() и для класса MEDIT.

Attributes

<ClassName> TEXTEDIT
<Path> String, путь к редактируемому файлую
<FileName> String, имя файла.
<ColorSpec> String, цветовая спецификация. Если параметр <color> не задан,
  атрибут принимает значение SetColor()
  
  "clr1, clr2, clr3, clr4"
  clr1 - основной цвет символа
  clr2 - цвет строки EOF
  clr3 - цвет выделенных строк/подстрок
  clr4 - цвет найденой подстроки
  
<nTop> координаты области редакторования TEXTEDIT, задается параметром <Lrow>
<nLeft> координаты области редакторования TEXTEDIT, задается параметром <Lcol>
<nBottom> координаты области редакторования TEXTEDIT, задается параметром <Rrow>
<nRight> координаты области редакторования TEXTEDIT, задается параметром <Rcol>
<Lines> Numeric, количество строк в редактируемом объекте TEXTEDIT
<Line> Numeric, номер текущей строки.
<Pos> Numeric, позиция курсора в строке.
<ColWin> Numeric, позиция курсора в строке в области редактирования.
<RowWin> Numeric, позиция курсора - строка - в области редактирования.
<Updated> Logical, TRUE, если данные изменены и изменения не сохранены.
<MarginLeft> Numeric, левая граница текста, по умолчанию TE_MARGIN_LEFT
<MarginRight> Numeric, правая граница, по умолчанию TE_MARGIN_RIGHT
<TabSize> Numeric, шаг табуляции, по умолчанию TE_TABSIZE
<Hyphen> Logical, если TRUE, то при форматировании текства в словах возможен перено, по умолчанию TE_HYPHEN
<MaxStrings> Numeric, максимальное количество строк в буфере редактирования TEXTEDIT, по умолчанию TE_MAXSTRINGS
<TabPack> Logical, если TRUE, символы "пробел" по возможности упакуются в <Tab>
  По умолчанию set("edit_tabpack")
<InFocus> Logical, если TRUE, объект в фокусе.
<MkBlock> Logical, если TRUE, отмечен какой-либо блок.
<StrBlock> Logical, если TRUE, отмечен строчный блок.
<RectBlock> Logical, если TRUE, отмечен прямоугольный блок.
<KoordBlock> Array of numeric value, координаты блока в буфере редактирования {<nTop>, <nLeft>, <nBottom>, <nRight>} или
  {<nBottom>, <nRight>, <nTop>, <nLeft>}
<LenUndo> Numeric, размер буфера отката (undo). По умолчанию 100.
<Charset> String, кодировка.
<EofString> String, текст строки <end of file>. По умолчанию <EOF>
<lEofString> Logical, если TRUE, показывать строку <EofString> по достижени
  конца буфера редактирования.
<HighLightColor>MAP, АМ, содержаший номера строк отображаемых специально заданным цветом.
<Nstyle> Logical, если TRUE, каждая строка текста в области редактирования содержит порядковый номер.
<EdBuffer> Array, array of string to edit. Буфер редактирования.
  

Methods

ADDTOCLIPBOARD Добавить блок в буфер.
APPLYKEY Выполнить кодовый блок.
BACKSPACE Удалить символ слева от курсора.
BEGINBLOCK Начать отметку блока.
BOTTOM Перемещение на последнюю строку буфера редактирования.
CANCELBLOCK Снять отметку блока.
CENTERLINE Центрировать строку.
CLEAR Очистка буфера редактирования.
COPYBLOCK Копировать блок.
COPYTOCLIPBOARD Копировать блок в буфер.
CURWORD Дать текущее слово.
DELEND Удалить все символы до конца строки.
DELETE Удалить символ.
DELETEBLOCK Удалить блок.
DELETELINE Удалить строку.
DELHOME Удалить все символы до начала строки.
DELLEFT Удалить символ слева от курсора.
DELRIGHT Удалить символ.
DOWN Перемещение вниз на одну строку.
DRAW Вставить один из символов псевдографики.
END Перемещение в конец строки.
ENDBLOCK Закончить отметку блока.
FIND Поиск подстроки.
FINDNEXT Продолжение поиска вперед по тексту.
FINDPREV Продолжение поиска назад по тексту.
FORMATLINE Форматировать строку.
FORMATPART Форматировать абзац.
GOTOLINE Перемещение на заданную строку.
GOTOPOS Перемещение на новую колонку.
HANDLEKEY Обработчик кодов.
HIGHLIGHTADD Выделить строку цветом.
HIGHLIGHTDEL Отказаться от выделения строки заданным цветом.
HOME Перемещение на начало строки.
IDENTITY Поиск парного( или идентичного) символа.
INSERT Вставить символ или подстроку.
INSERTLINE Вставить новую строку.
INSMACRO Выполнить макро-команду и вставить результат в буфер редактирования.
INSTEMPL Заменить шаблон на подстроку.
KILLNUMSTYLE Снять стиль "NUMERIC"
LEFT Перемещение влево на одну позицию.
LOADBLOCK Загрузка блока.
LOADFILE Загрузка файла.
LOADSTRING Загрузка строки.
MATCHSTRUCT Поиск элементов структуры.
MOVEBLOCK Переместить блок.
MOVETOCLIPBOARD Переместить блок в буфер.
NEWLINE Переход на новую строку.
NEXTWORD Следующее слово.
OVERSTRIKE Заменить символ или подстроку.
PAGEDOWN Перемещение вниз на одну страницу.
PAGEUP Перемещение вверх на одну страницу.
PASTEFROMCLIPBOARD Вставить блок из буфера.
PREVWORD Предыдущее слово.
PRINT Печать.
PRINTBLOCK Печать блока.
REFRESH Обновить область редактирования TEXTEDIT.
REPLACE Поиск с заменой.
RIGHT Перемещение вправо на 1 позицию.
SAVEBLOCK Записать блок в файл.
SAVEFILE Сохранение в файл.
SAVESTRING Запись в строку
SETCHARSET Установить новую колировку.
SETFOCUS Установить/снять фокус
SETKEY Установить блок кода, связанный с кодом клавиши.
SETNEWCOLOR Установить новую цветовую спецификацию.
SETNUMSTYLE Установить/снять стиль "NUMERIC"
TEXTEDITNEW Конструктор объекта TEXTEDIT.
TOP Перемещение на начало.
UNDO Выпольнить откат.
UP Перемещение вверх на одну строку.
WORDLEFT Перемещение влево на одно слово.
WORDRIGHT Перемещение вправо на одно слово.
WRITEUNDO Сохранить данные для операции "откат".

Method TEXTEDIT:ADDTOCLIPBOARD()

 AddToClipboard(<aClipbrd>) 	--> NIL

AddToClipboard() добавляет отмеченный блок(строчный или прямоугольный) в конец буфер <aClipbrd>, не замещая при этом содержимое буфера. <aClipbrd> - это не системный буфер. Размер буфера редактирования <::Edbuffer> не изменяется. Отметка блока не снимается. Позиция курсора не меняется.

Method TEXTEDIT:APPLYKEY()

 ApplyKey(<nKey>) 	--> nResult

ApplyKey() выполняет кодовый блок ассоциированный с кодом <nKey>, который содержится в словаре, созданном в SetKey(), и возвращает <nResult>.

Method TEXTEDIT:BACKSPACE()

 BackSpace( [<lUndo>] ) 	--> NIL

BackSpace() удаляет в текущей строке <::Line> символ слева от <::Pos>.

Method TEXTEDIT:BEGINBLOCK()

 BeginBlock(<lType>[, <lUndo>]) 	--> NIL

BeginBlock() снимает отметку блока (если он был уже отмечен) и отмечает начало нового строчноги или прямоугольного блока.

Method TEXTEDIT:BOTTOM()

 Bottom([<lUndo>]) 	--> NIL

Bottom() перемещает указатель на последнюю строку буфера редактирования. Атрибут <::Line> принимает значение равное <::Lines>, а <::RowWin> значение, равное <::nBottom>-<::nTop>.

Method TEXTEDIT:CANCELBLOCK()

 CancelBlock([<lUndo>]) 	--> NIL

CancelBlock() снимает отметку блока. Атрибуты <::MkBlock>, <::StrBlock>, <::RectBlock> принимают значение FALSE.

Method TEXTEDIT:CENTERLINE()

 CenterLine([<lUndo>] ) 	--> NIL

CenterLine() сентрирует текущую строку <::Line>. Позиция курсора в строке не меняется.

Method TEXTEDIT:CLEAR()

 Clear() 	--> NIL

Clear() очищает буфер редактирования и сбрасывает все счетчики. Размер массива <::EdBuffer> усекается то 1 и этому элементу присваивается значение - пустая строка.

Внимание! Этот метод не сохраняет данные для операции отката.

Method TEXTEDIT:COPYBLOCK()

 CopyBlock([<lMove>[, <lUndo>]]) 	--> .T. || .F.

CopyBlock() перемещает курсор на начало(строка и колонка) блока и копирует или перемещает отмеченный блок на новое место, определенное текущим положением курсора: строка <::Line> и колонка <::Pos>.

Если блок не отмечен, CopyBlock() возвращает FALSE.

Когда выполняется операция "копирование", блок копируется в заданную точку и длина буфера редактирования увеличивается на длину блока(количество строк в блоке)

Операция "перемещение" аналогична опереции копирования, но блок удаляется со старого места и длина буфера редактирования не изменяется.

Method TEXTEDIT:COPYTOCLIPBOARD()

 CopyToClipboard(<aClipbrd>) 	--> NIL

CopyToClipboard() копирует отмеченный блок(строчный или прямоугольный) в буфер <aClipbrd>, замещая при этом содержимое буфера. <aClipbrd> - это не системный буфер. Размер буфера редактирования <::Edbuffer> не изменяется. Отметка блока не снимается. Позиция курсора не меняется.

Method TEXTEDIT:CURWORD()

 CurWord([<nPos>], [nLine>],[ <lUndo>]) 	--> sCurrentWord

CurWord() ищет слово в заданных координатах <nLine>, <nPos> и возвращает его если найдет. В противном случае возвращается пустая строка.

"Слово" определяется как последовательность символов исключая пробелы, запятые и точки.

Method TEXTEDIT:DELEND()

 DelEnd( [<lUndo>] ) 	--> NIL

DelEnd() удаляет в строке <::Line> все символы, начиная с <::Pos> и до конца.

Method TEXTEDIT:DELETE()

 Delete( [<lUndo>] ) 	--> NIL

Delete() вызывает метод DelRight().

Method TEXTEDIT:DELETEBLOCK()

 DeleteBlock([<lUndo>]) 	--> .T. || .F.

DeleteBlock() перемещает курсор на начало(строка и колонка) блока и удаляет отмеченный блок из буфера редактирования. Размер <::Edbuffer> уменьшается на размер(количество строк) удаленного блока. перемещает курсор на начало(строка и колонка) блока

Если блок не был отмечен, DeleteBlock() возвращает FALSE.

Method TEXTEDIT:DELETELINE()

 DeleteLine( [<lUndo>] ) 	--> NIL

DeleteLine() удаляет текущую строку <::Line>, размер буфера редактирования <::Edbuffer> уменьшается <::Edbuffer> на 1.

Method TEXTEDIT:DELHOME()

 DelHome( [<lUndo>] ) 	--> NIL

DelHome() удаляет все символы в строке <::Line> начиная с колонки <::Pos> до начала строки <::Line>. Атрибуты <::Pos> и <::ColWin> принимают значение 1.

Method TEXTEDIT:DELLEFT()

 DelLeft( [<lUndo>] ) 	--> NIL

DelLeft() вызывает метод BackSpace().

Method TEXTEDIT:DELRIGHT()

 DelRight( [<lUndo>] ) 	--> NIL

DelRight() удаляет символ в строке <::Line> и колоне <::Pos>. Атрибуты <::Pos> и <::ColWin> не изменяются.

Method TEXTEDIT:DOWN()

 Down([<lUndo>]) 	--> NIL

Down() перемещает курсор на новую строку <::Line>+1. Атрибуты <::Line> и <::RowWin> увеличиваются на 1. Если <::RowWin> больше чем нижняя граница области редактирования, то <::RowWin> принимает значение <::nBottom>-<::nTop>+1 и текст в области редактирования скроллируется вверх на 1 строку.

Method TEXTEDIT:DRAW()

 Draw(<lDrawMode>, <nKey>[, <lUndo>] ) 	--> .T. || .F.

Draw() рисует символы псевдографики в текущей позиции строки <::Line> и колонки <::Pos> в зависимости от кода нажатой клавиши, направления рисования и окружающих уже нарисованных символов.

Method TEXTEDIT:END()

 End([<lUndo>]) 	--> NIL

End() перемещает курсор в конец текущей строки <::Line>. Атрибут <::Pos> принимает значение len(<::Edbuffer[::Line]>)+1.

Method TEXTEDIT:ENDBLOCK()

 EndBlock(<lType>[, <lUndo>]) 	--> NIL

EndBlock() заканчивает отметку блока - строчного или прямоугольного.

Method TEXTEDIT:FIND()

 Find(<oFind>[, <lUndo>]) 	--> .T. || .F.

Find() осуществляет поиск подстроки или регулярного выражения в тексте. <oFind> содержит параметры поиска(выражение, направление, регистр и прочие). Если выражение найдено, курсор перемещается на начало найденого слова. Это слово выделяется специальным цветом (<clr4> из <::ColorSpec>).

Если поиск был успешен, метод возвращает TRUE, иначе возвращает FALSE.

Method TEXTEDIT:FINDNEXT()

 FindNext(<oFind>[, <lUndo>]) 	--> .T. || .F.

FindNext() продолжает поиск начатый методом <::Find()> вперед по тексту. <oFind> содержит параметры поиска(выражение, регистр и прочие). Атрибут <::Direct> объекта <oFind> устанавливается равным 1. Если выражение найдено, курсор перемещается на начало найденого слова. Это слово выделяется специальным цветом (<clr4> из <::ColorSpec>).

Method TEXTEDIT:FINDPREV()

 FindPrev(<oFind>[, <lUndo>]) 	--> .T. || .F.

FindPrev() продолжает поиск начатый методом <::Find()> назад по тексту. <oFind> содержит параметры поиска(выражение, регистр и прочие). Атрибут <::Direct> объекта <oFind> устанавливается равным 2. Если выражение найдено, курсор перемещается на начало найденого слова. Это слово выделяется специальным цветом (<clr4> из <::ColorSpec>).

Method TEXTEDIT:FORMATLINE()

 FormatLine([<lAutoMargin>],[ <nMarginLeft>],[ <nMarginRight>],[ <nTabSize>],[ <lHyphen>][, <lUndo>] ) 	--> NIL

FormatLine() форматирует текущую строку <::Line> в соответствии с переданными параметрами.

Method TEXTEDIT:FORMATPART()

 FormatPart([<lAutoMargin>],[ <nMarginLeft>],[ <nMarginRight>],[ <nTabSize>],[ <lHyphen>][, <lUndo>] ) 	--> NIL

FormatPart() форматирует часть текста начиная со строки <::Line> до следующего абзаца.

Method TEXTEDIT:GOTOLINE()

 GotoLine(<nLine>[, <lUndo>]) 	--> .T. || .F.

GotoLine() перемещает курсор на новую строку с номером <nLine> если <nLine> в пределах 1 и <::Lines>. Атрибут <::Line> принимает значение <nLine>.

Method TEXTEDIT:GOTOPOS()

 GotoPos(<nPos>[, <lUndo>]) 	--> .T. || .F.

GotoPos() перемещает курсор в текущей строке <::Line> на новую колонку <nPos>. Атрибут <::Pos> принимает значение <nPos>.

Method TEXTEDIT:HANDLEKEY()

 HandleKey(<nKey>[, <lUndo>]) 	--> .T. || .F.

HandleKey() получает код клавиши и пытается выполнить операцию, соответствующую коду(например, перемещение вверх, вниз и прочее)

Method TEXTEDIT:HIGHLIGHTADD()

 HighLightAdd(<nLine>, <nColorItem>) 	--> .T. || .F.

HighLightAdd() выделяет строку <nLine> цветом <nColorItem> из спецификации <::ColorSpec> и сохраняет эту информацию в массиве <::HighLightColor>.

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

Method TEXTEDIT:HIGHLIGHTDEL()

 HighLightDel(<nLine>, <nColorItem>) 	--> .T. || .F.

HighLightDel() снимает для строки выделение <nLine> цветом с номером <nColorItem> в спецификации <::ColorSpec> и удаляет информацию из массива <::HighLightColor>.

Method TEXTEDIT:HOME()

 Home([<lUndo>]) 	--> NIL

Home() скроллирует текст на первый отличный от пробела символ текущей строки <::Line>.

Повторный вызов метода для этой же строки приводит к перемещению курсора на начало строки.

Method TEXTEDIT:IDENTITY()

 Identity(<sSymb>, [<lDirect>],[ <lUndo>]) 	--> .T. || .F.

Identity() ищет идентичный заданному или парный символ: (), <>, {}, []; и устанавливает курсор на найденный символ возвращая при этом TRUE.

Method TEXTEDIT:INSERT()

 Insert( <sStr>, [<lUndo>] ) 	--> NIL

Insert() вставляет подстроку <sStr> в текущую строку <::Line> начиная с колонки <::Pos>.

Если <::Line> больше чем размер буфера редактирования <::Lines>, то <::EdBuffer> увеличивается до <::Line> строк.

Новая позиция курсора после операции: строка <::Line> и колонка <::Pos>+len(sStr).

Method TEXTEDIT:INSERTLINE()

 InsertLine([<lUndo>][, [lAuto]] ) 	--> NIL

InsertLine() вставляет в буфер редактирования новую строку сразу после строки <::Line>-1. Размер буфера редактирования <::EdBuffer> увеличивается на 1.

Номер текущей строки остается прежним <::Line>.

Если <lAuto>, курсор позиционируется в колонку, соответствующую первому, отличному от пробела, символу предыдущей строки <::Line>-1. Иначе, курсор позиционируется в колонку <::MarginLeft>

Method TEXTEDIT:INSMACRO()

 InsMacro(<aTempl>[, <lUndo>] ) 	--> NIL

Если текущее слово в строке <::Line> и колонке <::Pos> является одним из ключей массива <aTempl>, InsMacro() заменит слово - шаблон на результат макрокоманды.

Method TEXTEDIT:INSTEMPL()

 InsTempl(<aTempl>[, <lUndo>] ) 	--> NIL

Если текущее слово в строке <::Line> и колонке <::Pos> является одним из ключей массива <aTempl>, InsTempl() заменит слово - шаблон на соответствующую строку.

<sStr> может содержать символы </>, они используются как разделители строк. В этом случае в буфер редактирования мложет быть вставлено сразу несколько строк, начиная с колонки <::Pos>.

Method TEXTEDIT:KILLNUMSTYLE()

 KillNumStyle() 	--> NIL

KillNumStyle() снимает режим отображения порядковых номеров строк.

Method TEXTEDIT:LEFT()

 Left([<lUndo>]) 	--> NIL

Left() перемещает курсор на 1 позицию влево. Атрибуты <::Pos> и <::ColWin> уменьшаются на 1. если <::ColWin> меньше 1, <::ColWin> принимает значение 1 и текст в области редактирования скроллируется вправо на 1.

Method TEXTEDIT:LOADBLOCK()

 LoadBlock(<sFileName>[, <lUndo>]) 	--> .T. || .F.

LoadBlock() читает содержимое файла <sFileName> и вставляет его в буфер редактирования начиная с текущей строки <::Line>. Вставленные строки помечаются как строчный блок.

Размер буфера редактирования <::EdBuffer> увеличивается на количество вставленных строк.

Method TEXTEDIT:LOADFILE()

 LoadFile(<sFileName>) 	--> .T.

LoadFile() загружает файл в буфер редактирования. Содержимое файла разбивается на подстроки, в качестве разделителя используется жесткий возврат каретки. Подстроки транслируются из кодировки <::CharSet> в кодировку CLIP-машины и записываются в <::Edbuffer>. Прежнее содержимое <::EdBuffer> уничтожается.

Если файл не существует или не доступен для чтения метод возвращает FALSE. <::EdBuffer> не изменяется.

Внимание! Этот метод не сохраняет данные для операции отката.

Method TEXTEDIT:LOADSTRING()

 LoadString(<sStr>) 	--> .T.

LoadString() загружает строку в буфер редактирования. Строка разбивается на подстроки, в качестве разделителя используется жесткий возврат каретки. Подстроки транслируются из кодировки <::CharSet> в кодировку CLIP-машины и записываются в <::Edbuffer>. Прежнее содержимое <::EdBuffer> уничтожается.

Внимание! Этот метод не сохраняет данные для операции отката.

Method TEXTEDIT:MATCHSTRUCT()

 MatchStruct(<sWord>, [<lDirect>],[ <lUndo>]) 	--> .T. || .F.

MatchStruct() ищет в тексте элементы Clipper структур:

DO CASE; CASE; OTHERWISE; END[CASE]

DO[ WHILE]; LOOP; END[DO]

IF; ELSE; [ELSEIF]; END[IF]

...

и устанавливает курсор на найденный элемент.

Поиск не зависит от регистра, в каком были набраны символы. Структуры могут быть вложенными.

Method TEXTEDIT:MOVEBLOCK()

 MoveBlock([<lUndo>]) 	--> .T. || .F.

MoveBlock() вызывает метод CopyBlock() с первым параметром TRUE.

Method TEXTEDIT:MOVETOCLIPBOARD()

 MoveToClipboard(<aClipbrd>) 	--> NIL

AddToClipboard() перемещает отмеченный блок(строчный или прямоугольный) в конец буфер <aClipbrd>, замещая при этом содержимое буфера. <aClipbrd> - это не системный буфер.

Курсор помещается на начало блока и блок удаляется. Размер буфера редактирования <::Edbuffer> уменьшается на размер удаленного блока.

Method TEXTEDIT:NEWLINE()

 NewLine([<lUndo>][, <lAuto>] ) 	--> NIL

InsertLine() перемещает курсор на новую строку <::Line>+1. Размер буфера редактирования <::EdBuffer> не изменяется.

Номер текущей строки остается прежним <::Line>.

Если <lAuto>, курсор позиционируется в колонку, соответствующую первому, отличному от пробела, символу предыдущей строки <::Line>-1. Иначе, курсор позиционируется в колонку <::MarginLeft>

Method TEXTEDIT:NEXTWORD()

 NextWord([<nPos>], [nLine>],[ <lUndo>]) 	--> sPrevWord

NextWord() ищет следующее слово за заданным в координатах <nLine>, <nPos> и возвращает его если найдет. В противном случае NextWord() возвращает пустую строку.

Method TEXTEDIT:OVERSTRIKE()

 OverStrike( <sStr>, [<lUndo>] ) 	--> NIL

OverStrike() заменяетв текщей строке <::Line> подстроку длиной len(sStr) на <sStr> начиная с колонки <::Pos> .

Новая позиция курсора: строка<::Line> и колонка <::Pos>+len(sStr).

Method TEXTEDIT:PAGEDOWN()

 PageDown([<lUndo>]) 	--> NIL

PageDown() перемещает курсор с текущей строки на новую строку с номером <::Line>+<::nBottom>-<nTop>.

Атрибут <::Line> увеличивается на <::nBottom>-<nTop> и текст в окне редактирования скроллируется вверх на <::nBottom>-<nTop> строк.

Method TEXTEDIT:PAGEUP()

 PageUp([<lUndo>]) 	--> NIL

PageUp() перемещает курсор с текущей строки на новую строку с номером <::Line>-<::nBottom>-<nTop>.

Атрибут <::Line> уменьшается на <::nBottom>-<nTop> и текст в окне редактирования скроллируется вниз на <::nBottom>-<nTop> строк.

Method TEXTEDIT:PASTEFROMCLIPBOARD()

 PasteFromClipboard(<aClipbrd>[, <nItem>][, <lUndo>]) 	--> .T. || .F.

PasteFromClipboard() вставляет блок ихз буфера в текущую позицию курсора <::Line> и <::Pos>.

Блок не удаляется из буфера <aClipbrd>. Размер <::Edbuffer> увеличивается на размер вставленного блока (количество строк).

Если массив <aClipbrd> пуст, PasteFromClipboard() возвращает FALSE; иначе возвращает TRUE.

Method TEXTEDIT:PREVWORD()

 PrevWord([<nPos>], [nLine>],[ <lUndo>]) 	--> sPrevWord

PrevWord() ищет предшествующее слово заданному в координатах <nLine>, <nPos> и возвращает его если найдет. В противном случае PrevWord() возвращает пустую строку.

Method TEXTEDIT:PRINT()

 Print() 	--> .T.

Print() осуществляет печать всего текста из буфера редактирования.

Method TEXTEDIT:PRINTBLOCK()

 PrintBlock() 	--> .T. || .F.

PrintBlock() осуществляет печать отмеченного блока (строчного или прямоугольного)

Method TEXTEDIT:REFRESH()

 Refresh() 	--> NIL

Refresh() обновляет область редактирования TEXTEDIT.

Метод Refresh()вызывается автоматически из остальных методов класса TEXTEDIT и не требует прямого вызова.

Method TEXTEDIT:REPLACE()

 Replace(<oFind>[, <lUndo>]) 	--> .T. || .F.

Replace() ищет строку или выражение в тексте. Объект <oFind> содержит параметры поиска (искомое выражение, выражение для замены, направление поиска и прочее). Если выражение найдено, оно будет заменено на строку или выражение <oFind:Rstring>. Эта подстрока будет отмечена специальным цветом (<clr4> из <::ColorSpec>).

Method TEXTEDIT:RIGHT()

 Right([<lUndo>]) 	--> NIL

Right() перемещает курсор вправо на 1 позицию. Атрибуты <::Pos> и <::ColWin> увеличиваются на 1. Если <::ColWin> больше чем правая граница области редактирования, <::ColWin> принимает значение <::nRight>-<nLeft> + 1 и текст в области редактирования скроллируется влево на 1 колонку.

Method TEXTEDIT:SAVEBLOCK()

 SaveBlock(<sFileName>[, <lCreateBak>[, <lUndo>]]) 	--> .T. || .F.

SaveBlock() записывает отмеченный строчный или прямоугольный блок в файл <sFileName>. Если файл <sFileName> ранее не существовал, он будет создан, иначе переписан.

Если блок не был отмечен или произошла ошибка при записи/создании файла, метод вернет FALSE.

Method TEXTEDIT:SAVEFILE()

 SaveFile(<sFileName>[, <lCreateBak>]) 	--> .T.

SaveFile() записывает содержимое буфера редактирования <::EdBuffer> в файл.

Если файл <sFileName> не существует, он создается. В противном случае переписывается. Атрибут <::Updated> принимает значение FALSE.

Если при записи/создании файла произошла ошибка, SaveFile() возвращает FALSE.

Внимание! Этот метод не сохраняет данные для операции отката.

Method TEXTEDIT:SAVESTRING()

 SaveString() 	--> sStr

SaveString() записывает содержимое буфера редактирования в строку и возвращает ее. Подстроки транслируются из кодировки CLIP-машины в <::Charset> и записываются в результирующую строку через символ CR.

Внимание! Этот метод не сохраняет данные для операции отката.

Method TEXTEDIT:SETCHARSET()

 SetCharset(<sCharset>) 	--> NIL

SetCharset() устанавливает кодировку <sCharset> и транслирует данные в буфере редактирования (если он не пуст) в кодировку CLIP-машины.

Method TEXTEDIT:SETFOCUS()

 SetFocus([<lFocus>]) 	--> lNewFocus

SetFocus() устанавливает или снимает фокус. Если <lFocus> не определен, <lFocus> принимает значение !<::InFocus>

Method TEXTEDIT:SETKEY()

 SetKey(<nKey>[, <bData>]) 	--> bPreviouse

SetKey() устанавливает новый кодовый блок, ассоциированный с кодом <nKey>. Когда при этом замещается существующий блок кода, метод возвращает этот существующий блок, иначе возвращает вновь установленный. Коды клавиш и связанные с ними кодовые блоки обрабатываются методом ApplyKey().

Если <bData> NIL, SetKey() возвращает старый кодовый блок и удаляет код клавиши с ассоциированым с ним кодовым блоком.

По умолчанию с клавишами перемещения курсора(K_UP, K_DOWN, K_LEFT, K_RIGHT, K_PGUP, K_PGDN, K_HOME, K_END ....) ассоциированы соответствующие методы Left(), Right(), Up(), Down() и тд.

Method TEXTEDIT:SETNEWCOLOR()

 SetNewColor(<sNewColor>) 	--> NIL

SetNewColor() устанавливает новую цветовую спецификацию. Метод Refresh() использует первые 4 цвета для прорисовки данных:

<sNewColor> := "<clr1>, <clr2>, <clr3>, <clr4>[, ...<clrN>]" <clr1> - основной цвет символов <clr2> - цвет строки EOF <clr3> - цвет выделенного текста <clr4> - цвет текста, выделенного операциями поиска ... <clrN> - пользовательский цвет

Method TEXTEDIT:SETNUMSTYLE()

 SetNumStyle([<lNum>]) 	--> NIL

SetNumStyle() устанавливает/снимает режим отображения строк в области редактирования. Если <lNum> TRUE, в левой части области редактирования отображаются порядковые номера строк в буфере редактирования.

Method TEXTEDIT:TEXTEDITNEW()

 TextEditNew(<Lrow>, <Lcol>, <Rrow>, <Rcol>, [<color>]) 	--> new TEXTEDIT object

TextEditNew() создает и возвращает объект TEXTEDIT. Объект этого класса может быть использован для просмотра, редактирования, управления текстовыми данными.

Method TEXTEDIT:TOP()

 Top([<lUndo>]) 	--> NIL

Top() перемещает указатель на первую строку буфера редактирования. Атрибуты <::Line> и <::RowWin> устанавливаются равными 1.

Method TEXTEDIT:UNDO()

 Undo() 	--> NIL

Undo() выполняет операцию "откат" по данным, сохраненным в буфере отката. Размер этого буфера задается атрибутом <::LenUndo>.

Почти все методы класса по умолчанию сохраняют данные для выполнения отката если пераметр <lUndo> TRUE.

Method TEXTEDIT:UP()

 Up([<lUndo>]) 	--> NIL

Up() перемещает курсор на новую строку <::Line>-1. Атрибуты <::Line> и <::RowWin> уменьшаются на 1. Если <::RowWin> меньше 1, <::RowWin> принимает значение 1 и текст в области редактирования скроллируется вниз на 1 строку.

Method TEXTEDIT:WORDLEFT()

 WordLeft([<lUndo>]) 	--> NIL

WordLeft() перемещает курсор на начало левого слова от текущего. Атрибуты <::Pos> и <::ColWin> принимают значения соответстующие позиции первого символа в слове.

Method TEXTEDIT:WORDRIGHT()

 WordRight([<lUndo>]) 	--> NIL

WordRight() перемещает курсор на начало правого слова от текущего. Атрибуты <::Pos> и <::ColWin> принимают значения соответстующие позиции первого символа в новом слове.

Method TEXTEDIT:WRITEUNDO()

 WriteUndo(<nCMD>, <vData>) 	--> NIL

WriteUndo() сохраняет данные для операции "откат".

WriteUndo() вызывается автоматически из всех методов класса TEXTEDIT.

Example:

  #include <inkey.ch>
 local te, nKey, str
 
 clear screen
 wopen(2, 2, 20, 40)
 te := textEditNew(0, 0, maxrow(), maxcol(), "11/1,0/2,0/3,0/7")
 te:EofString := "  ******* The happy end  ******* "
 te:lEofString := .t.
 te:LoadString("This is test string!&\n&\tThis is test string!&\n&\t&\tThis is test string!&\n")
 while .T.
 nKey := inkey(0)
 do case
 case nKey == K_ESC
 str := te:SaveString()
 exit
 case nKey == K_UP
 te:up()
 case nKey == K_DOWN
 te:down()
 case nKey == K_LEFT
 te:left()
 case nKey == K_RIGHT
 te:right()
 otherwise
 if (nKey>=32 .and. nKey<=256)
 if ( Set(_SET_INSERT) )
 te:insert(chr(nKey))
 else
 te:overStrike(chr(nKey))
 endif
 endif
 endcase
 enddo
 
 wclose()
 
 ? str
 ?
 
 

See also

Find

Platforms

No dependies of platform.