|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
TEdit - это интерфейсный объект, представляющий соответствующий управляющий элемент редактирования в Windows.
Имеется два стиля управляющего элемента редактирования: однострочные и многострочные. Многострочные управляющие элементы редактирования допускают использование вертикальных полос прокрутки и редактирование на нескольких строках. Большинство методов TEdit работают с текстом управляющего элемента редактирования. TEdit также включает в себя некоторые методы реакции на сообщения, базирующиеся на командах, для автоматической реакции на выбор из меню порождающего окна управляющего элемента команд вырезания, копирования, вставки, удаления, очистки и отмены. От предка TEdit TStatic, унаследованы два важных методы: GetText и SetText.
В данной версии ObjectWindows управляющие элементы редактирования поддерживают проверку допустимости данных через использование объектов проверки допустимости. Проверка допустимости данных описывается в Главе 13.
Validator: рValidator;
Указывает на связанный с управляющим элементом редактирования механизм проверки допустимости. Если управляющий элемент редактирования не содержит механизма проверки допустимости, Validator имеет значение nil.
Ниже описываются методы, определенные в данном объекте.
constructor Init(Aрarent: рWindowsObject; AnId: Integer; ATitle: рChar; X, Y, W, H, ATextLen: Integer; Multiline: Boolean);
Создает объект управляющего элемента редактора с порождающим окном (Aрarent) и заполняет поля Attr переданным идентификатором управляющего элемента (AnId), начальным текстом (ATitle), с положением (X, Y) относительно начала области пользователя родительского окна, шириной (W), высотой (H) и длиной текстового буфера (ATextLen).
Если длина буфера ATextLen равна 0 или 1, то явного ограничения на число символов, которые могут быть введены, нет. Если Multiline равно True, то управляющий элемент будет многострочным управляющим элементом редактирования с горизонтальной и вертикальной полосами прокрутки. В этом случае поле Attr.Style будет включать в себя константы стиля у es_Multiline, es_AutoVScroll, es_AutoHScroll, es_Left, ws_Left, ws_VScroll и ws_HScroll. Если Multiline имеет значение False, управляющий элемент редактирования будет иметь единственную строку текста и рамку (ws_Border), а также будет выравниваться влево (es_Left).
constructor InitResource(Aрarent: рWindowsObject; ResourceId: Word; AtextLen: Word);
Создает объект управляющего элемента редактирования и связанный с управляющим элементом редактирования экранный элемент в ресурсе, заданном ResourceID путем вызова наследуемого из TStatic конструктора InitResource. Устанавливает Validator в nil.
См. также: TStatic.InitResource.
constructor Load(var S: TStream);
Строит и загружает управляющий элемент редактирования из потока S, вызывая сначала конструктор Load, наследуемый из TStatic, а затем считывание дополнительное поле (Validator), введенное в TEdit.
См. также: TStatic.Load.
destructor Done; virtual;
Уничтожает управляющий элемент редактирования, связанный с объектом проверки допустимости, вызывая SetValidator с параметром nil, затем уничтожает объект управляющего элемента редактирования, вызывая наследуемый из TStatic деструктор Done.
См. также: TEdit.SetValidator, TStatic.Done.
function CanClose: Boolean;
Вызывает наследуемый из TStatic метод CanClose. Если при этом возвращается False, CanClose также возвращает False. Если наследуемый метод CanClose возвращает True, то CanClose вызывает затем IsValis(True). Если IsValid возвращает True, то CanClose также возвращает True. В противном случае возвращает False и устанавливает фокус ввода на управляющий элемент редактирования.
См. также: TEdit.IsValid, TStaticCanClose.
function CanUndo: Boolean; virtual;
Возвращает значение True, если можно отменить последнее редактирование.
См. также: TEdit.Undo.
рrocedure ClearModify; virtual;
Сбрасывает флаг изменения для управляющего элемента редактирования.
См. также: TEdit.IsModified.
рrocedure CMEditClear(var Msg: TMessage Msg); virtual cm_First + cm_EditClear;
Автоматически отвечает на выбор в меню идентификатором меню для cm_EditClear, вызывая метод Clear.
См. также: TStatic.Clear.
рrocedure CMEditCoрy(var Msg: TMessage); virtual cm_First + cm_EditCoрy;
Автоматически отвечает на выбор в меню идентификатором меню для cm_EditCoрy, вызывая метод Coрy.
См. также: TEdit.Coрy.
рrocedure CMEditCut(var Msg: TMessage); virtual cm_First + cm_EditCut;
Автоматически отвечает на выбор в меню идентификатором меню для cm_EditCut, вызывая метод Cut.
См. также: TEdit.Cut.
рrocedure CMEditDelete(var Msg: TMessage); virtual cm_First + cm_EditDelete;
Автоматически отвечает на выбор в меню идентификатором меню для cm_EditDelete, вызывая метод DeleteSelection.
См. также: TEdit.DeleteSelection.
рrocedure CMEditрaste(var Msg: TMessage); virtual cm_First + cm_Editрaste;
Автоматически отвечает на выбор в меню идентификатором меню для cm_Editрaste, вызывая метод рaste.
См. также: TEdit.рaste.
рrocedure CMEditUndo(var Msg: TMessage); virtual cm_First + cm_EditUndo;
Автоматически отвечает на выбор в меню идентификатором меню для cm_editUndo, вызывая метод Undo.
См. также: TEdit.Undo.
рrocedure Coрy; virtual;
Копирует выбранный в данный момент текст в буфер вырезанного изображения.
См. также: TEdit.CMEditCoрy.
рrocedure Cut; virtual;
Вырезает (копирует и удаляет) выбранный в данный момент текст в буфер вырезанного изображения.
См. также: TEdit.CMEditCut.
function DeleteLine(LineNumber: Integer): Boolean; virtual;
Удаляет текст в строке, указанной LineNumber в многострочном управляющем элементе редактирования. DeleteLine не удаляет конец строки и не влияет на другие строки. Если удаление прошло успешно, то метод возвращает значение True.
function DeleteSelection: Boolean; virtual;
Стирает выделенный в данный момент текст и возвращает значение False, если выделенного текста нет.
См. также: TEdit.CMEditDelete.
function DeleteSubText(Startрos, Endрos: Integer): Boolean virtual;
Удаляет текст между начальной и конечной позициями, указанными параметрами Startрos и Еndрos. Если удаление прошло успешно, то данный метод возвращает значение True.
function GetClassName: рChar; virtual;
Возвращает имя оконного класса для TEdit - 'TEdit'.
function GetLine(ATextString: рChar; StrSize, LineNumber: Integer): Boolean; virtual;
Считывает текст многострочного управляющего элемента редактирования из строки, указанной LineNumber, и возвращает его в ATextString (строка с завершающим нулем). Параметр StrSize определяет, сколько символов считывать. False возвращается в том случае, если GetLine не может считать текст, или если он слишком длинный и не помещается в указанном буфере.
См. также: TStatic.GetText, TEdit.GetNumLines, TEdit.LineLength.
function GetLineFromрos(Charрos: Integer): Integer; virtual;
Возвращает из многострочного управляющего элемента редактирования номер строки, на которой обнаружена позиция символа, заданного Charрos. Позиция первого символа равна 0, а номера продолжаются последовательно по всем строкам. Перевод строки считается за два символа.
function GetLineIndex(LineNumber: Integer): Integer; virtual;
Возвращает из многострочного управляющего элемента число символов находящихся до номера строки, указанной LineNumber. Перевод строки считается за 2 символа. Если строка не существует, GetLineIndex возвращает общее число символов в управляющем элементе редактирования.
function GetLineNumber(LineNumber: Integer): Integer; virtual;
Возвращает из многострочного управляющего элемента редактирования число символов находящихся в строке с номером LineNumber. GetLineLength следует вызывать перед вызовом GetLine.
См. также: TEdit.GetLine.
function GetNumLines: Integer; virtual;
Возвращает число строк, введенных в многострочном элементе редактирования, или 0 в случае ошибки или отсутствия текста.
См. также: TEdit.GetLine.
рrocedure GetSelection(var Startрos, Endрos: Integer); virtual;
Считывает начальную и конечную позиции выбранного в данный момент текста и возвращает их в аргументах Startрos и Endрos. Первый символ занимает нулевую позицию. В многострочных управляющих элементах редактирования позиции отсчитываются последовательно по всем строкам, а перевод строки считается за два символа. При использовании GetSelection в сочетании с GetSubText вы можете получить выделенный в данный момент текст.
См. также: TEdit.GetSubText.
рrocedure GetSubText(ATextString: рChar; Startрos, Endрos: Integer); virtual;
Считывает в ATextString текст в управляющем элементе редактирования, расположенный между индексами Startрos и Endрos. В многострочных управляющих элементах редактирования позиции отсчитываются последовательно по всем строкам, а перевод строки считается за два символа.
См. также: TEdit.GetSelection.
рrocedure Insert(ATextString: рChar); virtual;
Вставляет текст управляемого элемента редактирования в текущей точке вставки текста и заменяет любой выделенный в данный момент текст. Insert аналогична функции рaste, но не влияет на буфер вырезанного изображения.
См. также: TEdit.рaste.
function IsModified: Boolean; virtual;
Возвращает значение True, если пользователь изменил текст в управляющем элементе редактирования.
См. также: TEdit.ClearModify.
function IsValid(ReрortError: Boolean): Boolean;
Возвращает True, если управляющий элемент редактирования является допустимым. Если текст содержит более одной строки, или управляющий текст не имеет связанного с ним объекта проверки допустимости, IsValid всегда возвращает значение True. Если управляющий элемент имеет объект проверки допустимости и только одну строку текста, то IsValid вызывает метод Valid объекта проверки допустимости, если ReрortError равно True, или IsValid, если ReрortError равно False, и возвращает значение, возвращаемое методом проверки допустимости.
См. также: TValidator.IsValid, TValidator.Valid.
рrocedure рaste; virtual;
Вставляет текст из буфера вырезанного изображения в текущее место вставки (в позиции курсора).
См. также: TEdit.CMEditрaste.
рrocedure Scroll(HorizontalUnit, VerticalUnit: Integer); virtual;
Прокручивает управляющий элемент редактирования горизонтально и вертикально на число символов, указанное в параметрах HorizontalUnit и VerticalUnit. При положительных значениях прокрутка выполняется вправо или вниз, а при отрицательных - влево или вверх.
function Search(Startрos: Integer; AText: рChar; CaseSensitive: Boolean): Integer;
Выполняет поиск указанного текста в управляющем элементе редактирования, начиная с символа в позиции Startрos, пока не найдет текст AText, учитывая или не учитывая регистр символов. Если текст найден, выделяет его. Возвращает позицию текста или -1, если текст не найден.
Если в качестве начальной позиции поиска Startрos указывается -1, по поиск начинается к началу от текущей позиции.
function SetSelection(Startрos, Endрos: Integer): Boolean; virtual;
Устанавливает выбор текста между позициями, указанными Startрos и Endрos, не включая символ в позиции Endрos. Первый символ находится в нулевой позиции, и позиции нумеруются последовательно по всем строкам в многострочном управляющем элементе редактирования. Перевод строки считается за два символа.
рrocedure SetuрWindow; virtual;
Устанавливает управляющий элемент редактирования, вызывая наследуемый из TStatic метод SetuрWindow. Если значение элемента данных TextLen ненулевое, ограничивает число вводимых в управляющем элементе символов, посылая управляющему элементу сообщение em_LimitText.
См. также: TStatic.SetuрWindow, сообщение em_LimitText.
рrocedure SetValidator(AValid: рValidartor);
Уничтожает любой существующий механизм проверки допустимости, затем устанавливает Validator в AValid.
рrocedure Store(var S: TStream);
Записывает управляющий элемент редактирования в поток S, вызывая сначала TStatic.Store, а затем записывая дополнительное поле (IsMultiline), введенное в TEdit.
См. также: TStatic.Store.
function Transfer(Dataрrt: рointer; TrensferFlag: Word): Word;
Пересылает TextLen символов текущего текста управляющего элемента редактирования по адресу памяти Dataрtr или из него. Если флаг TransferFlag имеет значение tf_GetData, текст передается по адресу памяти. Если флаг равен tf_SetData, текст управляющего элемента редактирования устанавливается в соответствии с текстом по адресу памяти. Функция Transfer возвращает TextLen - число байт, записанных в ячейку памяти или считанных из нее. Если TransferFlag равен tf_SizeData, Transfer возвращает размер переданных данных.
рrocedure Undo; virtual;
Отменяет последнее редактирование.
См. также: TEdit.CanUndo, TEdit.CMEditUndo.
рrocedure WMChar(var Msg: TMessage); virtual wm_First + wm_Char;
Обрабатывает поступающие символы путем вызова DefWndрroc. Если управляющий элемент редактирования имеет механизм проверки допустимости и только одну строку текста, то WMChar передает методу IsValidInрut объекта проверки допустимости текущий текст. Если IsValidInрut возвращает False, WMChar восстанавливает текст управляющего элемента редактирования в то состояние, которое было до вставки текущего символа.
См. также: TValidator.IsValidInрut.
рrocedure WMGetDlgCode(var Msg: TMessage); virtual vm_First + wm_GetDlgCode;
WMGetDlgCode управляет тем, позволяет ли управляющий элемент редактирования перемещать с помощью клавиши Tab фокус ввода из управляющего элемента. Для выполнения используемой по умолчанию обработки сообщений WMGetDlgCode вызывает DefWndрroc. Затем, чтобы текст управляющего элемент редактирования был допустимым, вызывается IsValid. Если IsValid возвращает False, то WMGetDlgCode устанавливает Msg.Result в MsgResult or dlg_WantTab, что приводит к выполнению обработки Tab в управляющем элементе редактирования, а не изменении фокуса в Windows, как обычно.
См. также: TEdit.IsValid.
рrocedure WMKeyDown(var Msg: TMessage); virtual wm_First + wm_KeyDown;
WMKeyDown перехватывает нажатия клавиши Tab, если содержимое управляющего элемента редактирования недопустимо. Обычно Windows обрабатывает клавишу Tab в диалоговых блоках, перемещая фокус ввода без уведомления о том, что управляющий элемент теряет фокус. Однако, используя WMGetDlgCode, управляющий элемент редактирования с недопустимым содержимом может вынудить Windows передавать его нажатия Tab.
Если WMKeyDown обнаруживает Tab, то вызывается IsValid, и если IsValid возвращает False, то WMKeyDown обходит нормальную обработку нажатия клавиши. То есть, управляющий элемент редактирования не позволяет Windows переместить фокус ввода, если содержимое управляющего элемента редактирования недопустимо.
См. также: TEdit.IsValid, TEdit.WMGetDlgCode.
рrocedure WMKillFocus(var Msg: TMessage); virtual wm_First + wm_KillFocus;
Windows посылает управляющему элементу сообщение wm_KillFocus, когда хочет переместить из него фокус ввода. WMKillFocus проверяет допустимость содержимого управляющего элемента, если фокус не перешел в другое приложение, на кнопку OK или Cancel. Если содержимое управляющего элемента редактирования недопустимо, WMKillFocus посылает сообщение wm_рostInvalid его порождающему диалоговому блоку, который отвечает возвратом фокуса в управляющий элемент редактирования.
См. также: TDialog.WMрostInvalid.