Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.25;
Скачать: CL | DM;

Вниз

Выравнивание в TEdit   Найти похожие ветки 

 
-=GaLaN=- ©   (2003-08-14 12:08) [0]

Каким образом в TEdit можно выводить текст скажем не от левого края, а от правого или по центру?


 
Игорь Шевченко ©   (2003-08-14 12:15) [1]

Переписать метод CreateParams, задать в нем стиль, например ES_RIGHT для выравнивания по правому краю.


 
dataMaster ©   (2003-08-14 12:16) [2]

Имхо, лучше взять сторонний компонент. Вот он:

unit AlignEdit;

interface

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

type

TAlign = (eaLeft, eaCenter, eaRight);

TAlignEdit = class(TEdit)
private
{ Private-Deklarationen }
FAlign: TAlign;
procedure SetAlign(const Value: TAlign);
protected
{ Protected-Deklarationen }
procedure CreateParams(var Params: TCreateParams); override;
public
{ Public-Deklarationen }
constructor Create(AOwner: TComponent); override;
published
{ Published-Deklarationen }
property Alignment: TAlign read FAlign write SetAlign default eaLeft;
end;

procedure Register;

implementation

constructor TAlignEdit.Create(Aowner: TComponent);
begin
inherited Create(AOwner);
FAlign := eaLeft;
end;

procedure TAlignEdit.SetAlign(const Value: TAlign);
begin
if FAlign <> Value then
begin
FAlign := Value;
RecreateWnd;
end;
end;

procedure TAlignEdit.CreateParams(var Params: TCreateParams);
begin
inherited;
case FAlign of
eaLeft: Params.Style := Params.Style or ES_LEFT;
eaCenter: Params.Style := Params.Style or ES_CENTER;
eaRight: Params.Style := Params.Style or ES_RIGHT;
end;
end;

procedure Register;
begin
RegisterComponents("SwissDelphiCenter", [TAlignEdit]);
end;

end.


Но можно и свой Edit использовать. Выравнивает по правому краю:

procedure RJustifyEdit(var ThisEdit : TEdit);
var
Left, Width : Integer;
GString : String;
Rgn : TRect;
TheCanvas : TControlCanvas;
begin
TheCanvas := TControlCanvas.Create;
try
TheCanvas.Control := ThisEdit;
GString := ThisEdit.Text;
Rgn := ThisEdit.ClientRect;
TheCanvas.FillRect(Rgn);
Width := TheCanvas.TextWidth(GString);
Left := Rgn.Right - Width - 1;
TheCanvas.TextRect(Rgn, Left, 0, GString);
finally
TheCanvas.Free;
end ;
end;


Что нравится, то и бери.


 
-=GaLaN=- ©   (2003-08-14 12:18) [3]

А можно рабочий пример? Я понятия не имею, как переписывать методы и как сделать это выравнивание. Почему нет св-ва Alignment, как у TLabel?


 
Боян Георгиев   (2003-08-14 12:25) [4]

Можно използовать TMemo. Только надо ограничить ввод Enter-a.


 
dataMaster ©   (2003-08-14 12:29) [5]

2Боян Георгиев (14.08.03 12:25) [4]
>Можно използовать TMemo. Только надо ограничить ввод Enter-a.

Можно, но это извращение.


 
Боян Георгиев   (2003-08-14 12:41) [6]

dataMaster > извращение, но пестит время


 
-=GaLaN=- ©   (2003-08-14 12:47) [7]

2dataMaster: Спасибо! Компонент работает, очень удобно, что он полностью наследуется от TEdit, добавляя лишь одно св-во, как и надо было. Еще раз спасибо.



Страницы: 1 вся ветка

Текущий архив: 2003.08.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
1-81709
Vt
2003-08-11 08:09
2003.08.25
Мастера вот в статьях есть пример DragDrop для ListViw


1-81703
Yuraz
2003-08-11 11:17
2003.08.25
Как в Font.Color = clBlac вместо clBlack написать цифрами (0,0,0)


1-81624
Nucl
2003-08-12 23:27
2003.08.25
ComboBox - запретить ввод.


1-81739
h@1f-e1f
2003-08-10 12:06
2003.08.25
Загрузка страниц


1-81831
dataMaster
2003-08-13 12:58
2003.08.25
OpenDialog и его размеры