Главная страница
    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
1-81618
Behemoth
2003-08-14 11:09
2003.08.25
Импорт в Excel.


14-81918
Igorek
2003-08-05 12:25
2003.08.25
Народ, помогите бросить курить


1-81678
ki11er
2003-08-11 16:26
2003.08.25
Можно ли подключить исходник rtl к проекту?


4-82002
VD601
2003-06-22 21:02
2003.08.25
Что за сообщение $0009?


7-81971
SeF
2002-12-17 04:54
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский