Форум: "Основная";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
ВнизВыравнивание в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c