Внешний вид сайта:

Как отцентрировать текст в TEdit

Как поместить текст по центру (или справа) в 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.

Комментарии

Нет комментариев. Ваш будет первым!