Главная страница
    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
3-81589
alexander_ua
2003-07-29 17:19
2003.08.25
Paradox и вложенные запросы


14-81907
Rel_
2003-08-06 10:18
2003.08.25
Связка Delphi - Builder


1-81774
Andrew
2003-08-15 10:02
2003.08.25
Защита от копирования


3-81528
rosl
2003-08-01 08:32
2003.08.25
сортировка


3-81567
Desdechado
2003-07-30 11:17
2003.08.25
DBLookupComboBox и его потомки





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