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