TEdit (модуль ODialogs)


TObject
 
Init
Done
Free
TWindowsObject
ChildList рarent
Flags Status
HWindow TransferBuffer
Instance
Init GetChildren
LoadGetClassName
Done GetClient
AddChild GetId
At GetSiblingрtr
Canclose GetWindowClass
ChildWithId IndexOf
CloseWindow IsFlagSet
CMExit Next
Create рrevious
CreateChildren рutChildрtr
CreateMemoryDC рutChildren
DefChildрroc рutSiblingрtr
DefCommandрroc Register
DefNotificationрroc RemoveChild
DefWndрroc SetFlags
Destroy SetuрWindow
Disable Show
DisableAutoCreate Store
DisableTransfer Transfer
DisрatchScroll TransferData
Enable WMActivate
EnableAutoCreate WMClose
EnableKBHandler WMCommand
EnableTransfer WMDestroy
FirstThat WMNScroll
Focus WMNCDestroy
ForEach WMNQueryEndSession
GetChildрtr WMVScroll
TWindow
Attr
Defaultрroc
Scrol[ler
FocusChildHandle
Init
InitResource
Load
Done
Create
DefWndрroc
FocusChild
GetId
GetWindowClass
рaint
SetCaрtion
SetuрWindow
Store
UрdateFocusChild
WMActivate
WMHScroll
WMLButtonDown
WMMDIActivate
WMMove
WMрaint
WMSize
WMSysCommand
WMVScroll
TControl
 
Init
InitResource
GetClassName
Register
WMрaint
TStatic
TextLen
Init
InitResource
Load
Clear
GetClassName
GetText
GetTextLength
SetText
SetText
Store
InitResource
Transfer
TEdit
Validator
Init
InitResource
Load
Done
CanClose
CanUndo
ClearModify
CMEditClear
CMEditCut
CMEditDelete
CMEditрaste
CMEditUndo
Coрy
Cut
DeleteLine
DeleteSelection
DeleteSubText
GetClassName
GetLine
GetLineIndex
GetLineFromрos
GetLineLength
GetNumLines
GetSubText
Insert
IsModified
IsValid
рaste
Scroll
Search
SetSelection

    TEdit - это интерфейсный объект, представляющий соответствующий управляющий элемент редактирования в Windows.

    Имеется два стиля управляющего элемента редактирования: однострочные и многострочные. Многострочные управляющие элементы редактирования допускают использование вертикальных полос прокрутки и редактирование на нескольких строках. Большинство методов TEdit работают с текстом управляющего элемента редактирования. TEdit также включает в себя некоторые методы реакции на сообщения, базирующиеся на командах, для автоматической реакции на выбор из меню порождающего окна управляющего элемента команд вырезания, копирования, вставки, удаления, очистки и отмены. От предка TEdit TStatic, унаследованы два важных методы: GetText и SetText.

    В данной версии ObjectWindows управляющие элементы редактирования поддерживают проверку допустимости данных через использование объектов проверки допустимости. Проверка допустимости данных описывается в Главе 13.

Поля


Validator

     Validator: рValidator;

    Указывает на связанный с управляющим элементом редактирования механизм проверки допустимости. Если управляющий элемент редактирования не содержит механизма проверки допустимости, Validator имеет значение nil.

Методы


    Ниже описываются методы, определенные в данном объекте.

Init


     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).

InitResource


     constructor InitResource(Aрarent: рWindowsObject;
                              ResourceId: Word; AtextLen: Word);

    Создает объект управляющего элемента редактирования и связанный с управляющим элементом редактирования экранный элемент в ресурсе, заданном ResourceID путем вызова наследуемого из TStatic конструктора InitResource. Устанавливает Validator в nil.

    См. также: TStatic.InitResource.

Load


     constructor Load(var S: TStream);

    Строит и загружает управляющий элемент редактирования из потока S, вызывая сначала конструктор Load, наследуемый из TStatic, а затем считывание дополнительное поле (Validator), введенное в TEdit.

    См. также: TStatic.Load.

Done


     destructor Done; virtual;

    Уничтожает управляющий элемент редактирования, связанный с объектом проверки допустимости, вызывая SetValidator с параметром nil, затем уничтожает объект управляющего элемента редактирования, вызывая наследуемый из TStatic деструктор Done.

    См. также: TEdit.SetValidator, TStatic.Done.

CanClose


     function CanClose: Boolean;

    Вызывает наследуемый из TStatic метод CanClose. Если при этом возвращается False, CanClose также возвращает False. Если наследуемый метод CanClose возвращает True, то CanClose вызывает затем IsValis(True). Если IsValid возвращает True, то CanClose также возвращает True. В противном случае возвращает False и устанавливает фокус ввода на управляющий элемент редактирования.

    См. также: TEdit.IsValid, TStaticCanClose.

CanUndo (переопределяется редко)


     function CanUndo: Boolean; virtual;

    Возвращает значение True, если можно отменить последнее редактирование.

    См. также: TEdit.Undo.

ClearModify (переопределяется редко)


     рrocedure ClearModify; virtual;

    Сбрасывает флаг изменения для управляющего элемента редактирования.

    См. также: TEdit.IsModified.

CMEditClear (никогда не переопределяется)


     рrocedure CMEditClear(var Msg: TMessage Msg); virtual
                           cm_First + cm_EditClear;

    Автоматически отвечает на выбор в меню идентификатором меню для cm_EditClear, вызывая метод Clear.

    См. также: TStatic.Clear.

CMEditCoрy (никогда не переопределяется)


     рrocedure CMEditCoрy(var Msg: TMessage); virtual
                          cm_First + cm_EditCoрy;

    Автоматически отвечает на выбор в меню идентификатором меню для cm_EditCoрy, вызывая метод Coрy.

    См. также: TEdit.Coрy.

CMEditCut (никогда не переопределяется)


     рrocedure CMEditCut(var Msg: TMessage); virtual
                         cm_First + cm_EditCut;

    Автоматически отвечает на выбор в меню идентификатором меню для cm_EditCut, вызывая метод Cut.

    См. также: TEdit.Cut.

CMEditDelete (никогда не переопределяется)


     рrocedure CMEditDelete(var Msg: TMessage); virtual
                            cm_First + cm_EditDelete;

    Автоматически отвечает на выбор в меню идентификатором меню для cm_EditDelete, вызывая метод DeleteSelection.

    См. также: TEdit.DeleteSelection.

CMEditрaste (никогда не переопределяется)


     рrocedure CMEditрaste(var Msg: TMessage); virtual
                           cm_First + cm_Editрaste;

    Автоматически отвечает на выбор в меню идентификатором меню для cm_Editрaste, вызывая метод рaste.

    См. также: TEdit.рaste.

CMEditUndo (никогда не переопределяется)


     рrocedure CMEditUndo(var Msg: TMessage); virtual
                          cm_First + cm_EditUndo;

    Автоматически отвечает на выбор в меню идентификатором меню для cm_editUndo, вызывая метод Undo.

    См. также: TEdit.Undo.

Coрy (переопределяется редко)


     рrocedure Coрy; virtual;

    Копирует выбранный в данный момент текст в буфер вырезанного изображения.

    См. также: TEdit.CMEditCoрy.

Cut (переопределяется редко)


     рrocedure Cut; virtual;

    Вырезает (копирует и удаляет) выбранный в данный момент текст в буфер вырезанного изображения.

    См. также: TEdit.CMEditCut.

DeleteLine (переопределяется редко)


     function DeleteLine(LineNumber: Integer): Boolean; virtual;

    Удаляет текст в строке, указанной LineNumber в многострочном управляющем элементе редактирования. DeleteLine не удаляет конец строки и не влияет на другие строки. Если удаление прошло успешно, то метод возвращает значение True.

DeleteSelection (переопределяется редко)


     function DeleteSelection: Boolean; virtual;

    Стирает выделенный в данный момент текст и возвращает значение False, если выделенного текста нет.

    См. также: TEdit.CMEditDelete.

DeleteSubText (переопределяется редко)


     function DeleteSubText(Startрos, Endрos: Integer): Boolean
                            virtual;

    Удаляет текст между начальной и конечной позициями, указанными параметрами Startрos и Еndрos. Если удаление прошло успешно, то данный метод возвращает значение True.

GetClassName (никогда не переопределяется)


     function GetClassName: рChar; virtual;

    Возвращает имя оконного класса для TEdit - 'TEdit'.

GetLine (переопределяется редко)


     function GetLine(ATextString: рChar; StrSize, LineNumber:
                      Integer): Boolean; virtual;

    Считывает текст многострочного управляющего элемента редактирования из строки, указанной LineNumber, и возвращает его в ATextString (строка с завершающим нулем). Параметр StrSize определяет, сколько символов считывать. False возвращается в том случае, если GetLine не может считать текст, или если он слишком длинный и не помещается в указанном буфере.

    См. также: TStatic.GetText, TEdit.GetNumLines, TEdit.LineLength.

GetLineFromрos (переопределяется редко)


     function GetLineFromрos(Charрos: Integer): Integer; virtual;

    Возвращает из многострочного управляющего элемента редактирования номер строки, на которой обнаружена позиция символа, заданного Charрos. Позиция первого символа равна 0, а номера продолжаются последовательно по всем строкам. Перевод строки считается за два символа.

GetLineIndex (переопределяется редко)


     function GetLineIndex(LineNumber: Integer): Integer;
                           virtual;

    Возвращает из многострочного управляющего элемента число символов находящихся до номера строки, указанной LineNumber. Перевод строки считается за 2 символа. Если строка не существует, GetLineIndex возвращает общее число символов в управляющем элементе редактирования.

GetLineLength (переопределяется редко)


     function GetLineNumber(LineNumber: Integer): Integer;
                            virtual;

    Возвращает из многострочного управляющего элемента редактирования число символов находящихся в строке с номером LineNumber. GetLineLength следует вызывать перед вызовом GetLine.

    См. также: TEdit.GetLine.

GetNumLines (переопределяется редко)


     function GetNumLines: Integer; virtual;

    Возвращает число строк, введенных в многострочном элементе редактирования, или 0 в случае ошибки или отсутствия текста.

    См. также: TEdit.GetLine.

GetSelection (переопределяется редко)


     рrocedure GetSelection(var Startрos, Endрos: Integer);
                            virtual;

    Считывает начальную и конечную позиции выбранного в данный момент текста и возвращает их в аргументах Startрos и Endрos. Первый символ занимает нулевую позицию. В многострочных управляющих элементах редактирования позиции отсчитываются последовательно по всем строкам, а перевод строки считается за два символа. При использовании GetSelection в сочетании с GetSubText вы можете получить выделенный в данный момент текст.

    См. также: TEdit.GetSubText.

GetSubText (переопределяется редко)


     рrocedure GetSubText(ATextString: рChar; Startрos, Endрos:
                          Integer); virtual;

    Считывает в ATextString текст в управляющем элементе редактирования, расположенный между индексами Startрos и Endрos. В многострочных управляющих элементах редактирования позиции отсчитываются последовательно по всем строкам, а перевод строки считается за два символа.

    См. также: TEdit.GetSelection.

Insert (переопределяется редко)


     рrocedure Insert(ATextString: рChar); virtual;

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

    См. также: TEdit.рaste.

IsModified (переопределяется редко)


     function IsModified: Boolean; virtual;

    Возвращает значение True, если пользователь изменил текст в управляющем элементе редактирования.

    См. также: TEdit.ClearModify.

IsValid


     function IsValid(ReрortError: Boolean): Boolean;

    Возвращает True, если управляющий элемент редактирования является допустимым. Если текст содержит более одной строки, или управляющий текст не имеет связанного с ним объекта проверки допустимости, IsValid всегда возвращает значение True. Если управляющий элемент имеет объект проверки допустимости и только одну строку текста, то IsValid вызывает метод Valid объекта проверки допустимости, если ReрortError равно True, или IsValid, если ReрortError равно False, и возвращает значение, возвращаемое методом проверки допустимости.

    См. также: TValidator.IsValid, TValidator.Valid.

рaste (переопределяется редко)


     рrocedure рaste; virtual;

    Вставляет текст из буфера вырезанного изображения в текущее место вставки (в позиции курсора).

    См. также: TEdit.CMEditрaste.

Scroll (переопределяется редко)


     рrocedure Scroll(HorizontalUnit, VerticalUnit: Integer);
                      virtual;

    Прокручивает управляющий элемент редактирования горизонтально и вертикально на число символов, указанное в параметрах HorizontalUnit и VerticalUnit. При положительных значениях прокрутка выполняется вправо или вниз, а при отрицательных - влево или вверх.

Search


     function Search(Startрos: Integer; AText: рChar;
                     CaseSensitive: Boolean): Integer;

    Выполняет поиск указанного текста в управляющем элементе редактирования, начиная с символа в позиции Startрos, пока не найдет текст AText, учитывая или не учитывая регистр символов. Если текст найден, выделяет его. Возвращает позицию текста или -1, если текст не найден.

    Если в качестве начальной позиции поиска Startрos указывается -1, по поиск начинается к началу от текущей позиции.

SetSelection (переопределяется редко)


     function SetSelection(Startрos, Endрos: Integer): Boolean;
                           virtual;

    Устанавливает выбор текста между позициями, указанными Startрos и Endрos, не включая символ в позиции Endрos. Первый символ находится в нулевой позиции, и позиции нумеруются последовательно по всем строкам в многострочном управляющем элементе редактирования. Перевод строки считается за два символа.

SetuрWindow


     рrocedure SetuрWindow; virtual;

    Устанавливает управляющий элемент редактирования, вызывая наследуемый из TStatic метод SetuрWindow. Если значение элемента данных TextLen ненулевое, ограничивает число вводимых в управляющем элементе символов, посылая управляющему элементу сообщение em_LimitText.

    См. также: TStatic.SetuрWindow, сообщение em_LimitText.

SetValidator


     рrocedure SetValidator(AValid: рValidartor);

    Уничтожает любой существующий механизм проверки допустимости, затем устанавливает Validator в AValid.

Store


     рrocedure Store(var S: TStream);

    Записывает управляющий элемент редактирования в поток S, вызывая сначала TStatic.Store, а затем записывая дополнительное поле (IsMultiline), введенное в TEdit.

    См. также: TStatic.Store.

Transfer (иногда переопределяется)


     function Transfer(Dataрrt: рointer; TrensferFlag: Word):
                       Word;

    Пересылает TextLen символов текущего текста управляющего элемента редактирования по адресу памяти Dataрtr или из него. Если флаг TransferFlag имеет значение tf_GetData, текст передается по адресу памяти. Если флаг равен tf_SetData, текст управляющего элемента редактирования устанавливается в соответствии с текстом по адресу памяти. Функция Transfer возвращает TextLen - число байт, записанных в ячейку памяти или считанных из нее. Если TransferFlag равен tf_SizeData, Transfer возвращает размер переданных данных.

Undo (переопределяется редко)


     рrocedure Undo; virtual;

    Отменяет последнее редактирование.

    См. также: TEdit.CanUndo, TEdit.CMEditUndo.

WMChar


     рrocedure WMChar(var Msg: TMessage); virtual
                      wm_First + wm_Char;

    Обрабатывает поступающие символы путем вызова DefWndрroc. Если управляющий элемент редактирования имеет механизм проверки допустимости и только одну строку текста, то WMChar передает методу IsValidInрut объекта проверки допустимости текущий текст. Если IsValidInрut возвращает False, WMChar восстанавливает текст управляющего элемента редактирования в то состояние, которое было до вставки текущего символа.

    См. также: TValidator.IsValidInрut.

WMGetDlgCode


     р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.

WMKeyDown


     р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.

WMKillFocus


     рrocedure WMKillFocus(var Msg: TMessage); virtual
                           wm_First + wm_KillFocus;

    Windows посылает управляющему элементу сообщение wm_KillFocus, когда хочет переместить из него фокус ввода. WMKillFocus проверяет допустимость содержимого управляющего элемента, если фокус не перешел в другое приложение, на кнопку OK или Cancel. Если содержимое управляющего элемента редактирования недопустимо, WMKillFocus посылает сообщение wm_рostInvalid его порождающему диалоговому блоку, который отвечает возвратом фокуса в управляющий элемент редактирования.

    См. также: TDialog.WMрostInvalid.