Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Выравнивание по центру в TEdit (2)

Delphi , Компоненты и Классы , TEdit

Code:

unit Unit1;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
 
{ Пример TEdit с выравниванием по центру © Song
в модификации Vit }

 
type
TForm1 = class(TForm)
 procedure FormCreate(Sender: TObject);
private
 { Private declarations }
public
 { Public declarations }
end;
 
{ Обявляем класс нашего едита как потомок от стандартного}
type TMySuperEdit=class(TCustomEdit)
public
{ Внутри класса переопредялем процедуру CreateParams,
    т.к. нужный нам стиль можно изменить только на создании или пересоздании
    окна  }
Procedure CreateParams(Var Params: TCreateParams); override;
end;
 
var
Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
Procedure TMySuperEdit.CreateParams(Var Params: TCreateParams);
Begin
{ Вызываем родительский обработчик, чтобы он сделал все процедуры по созданию объекта класса }
inherited CreateParams(Params);
{ Изменяем стиль }
With Params Do Style:=Style or ES_CENTER;
End;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
{ Создаём едит на основе нашего класса и кладём его на форму }
With TMySuperEdit.Create(Self) Do
Parent:=Self;
end;
End.
Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)

Программный код на Delphi!

Давайте разбираться: код создает компонент TEdit с центрированием текста на форме. Для этого он создает класс TMySuperEdit, который наследуется от стандартного TCustomEdit, и переопределяет процедуру CreateParams.

Вот что происходит в коде:

  1. Событие FormCreate основной формы (TForm1) вызывается, которое создает экземпляр класса TMySuperEdit на форме.
  2. В процедуре CreateParams класса TMySuperEdit он вызывает метод CreateParams, чтобы выполнить стандартный процесс создания компонента TEdit.
  3. Затем он устанавливает свойство Style компонента TEdit в включенный режим (ES_CENTER), что позволяет центрировать текст.

Для улучшения кода есть несколько предложений:

  • Вместо использования отдельного класса (TMySuperEdit) для достижения центрирования, можно использовать встроенные свойства и методы компонента TEdit. Например, можно установить свойство Alignment напрямую на компонент TEdit.
  • Рассмотрите создание повторно используемого контрола (например, пользовательского контрола или компонента) для encapsulation этого поведения, а не модифицируйте стандартный компонент TEdit.

Вот пример альтернативного решения:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Alignment := taCenter;
end;

end.

В этом примере мы просто устанавливаем свойство Alignment компонента TEdit (Edit1) в значение taCenter в событии FormCreate. Это достигает того же результата, не модифицируя стандартный компонент TEdit.

Надеюсь это поможет!

В статье описывается пример создания TEdit в Delphi с центровкой текста по горизонтали за допомогою класса TMySuperEdit и переопределения процедуры CreateParams.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TEdit ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 01:00:50/0.003389835357666/0