Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
7-81968
Levan Varshanidze
2003-05-21 09:00
2003.08.25
Ищу материали по DATEKS MP500T


4-82008
Lony
2003-06-21 05:01
2003.08.25
Путь к dll


1-81746
HardClubber
2003-08-09 23:24
2003.08.25
Расширения и программы


1-81715
Егор
2003-08-10 19:27
2003.08.25
Вращение изображение New idea


3-81587
stud
2003-07-29 11:39
2003.08.25
тип времени в бд





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский