Как отцентрировать текст в TEdit
Создаем отдельный модуль по имени edit_interceptor, пишем:
unit edit_interceptor; interface uses StdCtrls, SysUtils, Classes, Controls, Windows; type TEdit = class(StdCtrls.TEdit) private FAlignment: TAlignment; procedure SetAlignment(Value: TAlignment); protected procedure KeyPress(var Key: Char); override; procedure CreateParams(var Params: TCreateParams); override; published property Alignment: TAlignment read FAlignment write SetAlignment; end; implementation { TEdit } procedure TEdit.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); case Alignment of taLeftJustify: Params.Style:= Params.Style or ES_LEFT and not ES_MULTILINE; taRightJustify: Params.Style:= Params.Style or ES_RIGHT and not ES_MULTILINE; taCenter: Params.Style:= Params.Style or ES_CENTER and not ES_MULTILINE; end; end; procedure TEdit.KeyPress(var Key: Char); begin inherited; end; procedure TEdit.SetAlignment(Value: TAlignment); begin if FAlignment <> Value then begin FAlignment:= Value; RecreateWnd; end; end; end.
Все!!!
Применение:
Создаем проект, добавляем в раздел uses наш модуль с обновленным TEdit, в самый конец. Помещаем компоненты TEdit в нужном количестве на форму.
Теперь, когда Вы вводите Edit1 (например) и ставите точку, выскакивает список свойств и методов, среди которых присутствует и наше новое свойство Alignment.
Комментарии