Pascal 7 & Objects

       

Опрос управляющих элементов редактирования


-----------------------------------------------------------------

Иногда нужно организовать опрос управляющих элементов редак- тирования для проверки допустимости введенного текста, записи ввода для его последующего использования или копирования ввода в другой управляющий элемент. TEdit поддерживает несколько методов опроса. Многие из опросов управляющих элементов редактирования и методов модификации возвращают или требуют от вас указать номер строки или позицию символа в строке. Все эти индексы начинаются с нуля. Другими словами, первая строка - это нулевая строка, а пер- вый символ в любой строке это нулевой символ. Самыми важными ме- тодами запроса являются GetText, GetLine, NumLines и LineLength.

Методы опроса управляющих элементов редактирования Таблица12.8 +------------------------------------------+--------------------+ | Выполняемое действие | Вызываемый метод | +------------------------------------------+--------------------| | Определение изменения текста | IsModified | | Считывание всего текста | GetText | | Считывание строки | GetLine | | Получение числа строк | GetNumLines | | Получение длины данной строки | GetLineLength | | Получение индекса выделенного текста | GetSelection | | Получение диапазона символов | GetSubText | | Подсчет символов перед строкой | LineIndex | | Поиск строки, содержащей индекс | GetLineFromProc | +------------------------------------------+--------------------+

Вы можете заметить, что методы запросов TEdit, которые возв- ращают текст из управляющего элемента редактирования, сохраняют форматирование текста. Это важно только для многострочных управ- ляющих элементов редактирования, которые допускают появление нес- кольких строк текста. В этом случае возвращаемый текст, который занимает несколько строк в управляющем элемента редактирования содержит в конце каждой строки два дополнительных символа: возв- рат каретки (#13) и смена строки (#10). Если этот текст снова по- мещается в управляющий элемент редактирования, вставляется из бу- фера вырезанного изображения, записывается в файл или выводится на принтер, то строки разбиваются так, как это было в управляющем элемента редактирования.


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

procedure TTestWindow.ReturnText(RetText: PChar); var TheText: array[020] of Char; begin if EC1^.GetText(@TheText, 20) then RetText:=@TheText else RetText:=nil; end;

procedure TTestWindow.ReturnText(RetText: PChar); var TheText: array[020] of Char; begin RetText:=nil; with EC^ do if NumLines >= LineNum then if LineLength(LineNum) < 11 then if GetLine(@TheText, 20, LineNum) then RetText := @TheText; end;

procedure TestWindow.ReturnLineText(RetText: PChar; LineNum: Integer); var TheText: array[020] of Char; begin with EC1^ do begin GetSelection(SelStart, SelEnd); GetSubText(TheText, SelStart, SelEnd); end; RetText := TheText; end;


Содержание раздела