Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Вниз

Edit   Найти похожие ветки 

 
Alex01   (2005-02-04 15:46) [0]

Как в Edit"е сделать алигмент текста по правой стороне?
Все свойства проверил, в справке тоже ничего не нашел


 
Marser ©   (2005-02-04 17:26) [1]

Ручками


 
MBo ©   (2005-02-04 17:41) [2]

стиль ES_RIGHT нужно включить при создании.

и ES_MULTILINE при необходимости учесть следующее:
ES_RIGHT
Windows 98/Me, Windows 2000/XP: Right aligns text in a single-line or multiline edit control. Windows 95, Windows NT 4.0 and earlier: Right aligns text in a multiline edit control.


 
Alex01   (2005-02-04 20:58) [3]

Нет, мне не на API надо, а у стандартного TEdit"a Ура! Я нашел в справке свойство Aligment
Use Alignment to indicate text alignment in the edit box

taLeftJustify:Align text on the left side in the edit control.
taCenter:Center the text in the edit control.
taRightJustify:Align text on the right side in the edit control.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Все это здорово, но в реальности у ЕДИТА нет такого свойства!!!!
Бред какой-то.
Я знаю, щас вы будете поливать меня грязью, но я просто в отчаянии...


 
Юрий Зотов ©   (2005-02-04 23:46) [4]

> Alex01   (04.02.05 20:58) [3]

> Нет, мне не на API надо, а у стандартного TEdit"a

Только что Вы сказали, что хотите иметь стандартный велосипед, но с десятью колесами.

А так не бывает. Либо стандартный, либо с десятью колесами. Одно из двух.

По сабжу - пишете наследника, замещаете CreateParams и ставите ES_RIGHT. Примеров полно в VCL, работы - на 10 минут.

Или используете Get/SetClassLong и все равно ставите ES_RIGHT. Тоже на 10 минут.


 
Cobalt ©   (2005-02-07 23:55) [5]

Alex01   (04.02.05 20:58) [3]
В новой Дельфе (если не ошибаюсь, начиная с 6-ой) надо внимательнее читать справку.
Это свойство только у CLX-ного контрола.


 
Petr V. Abramov ©   (2005-02-08 01:58) [6]

> замещаете CreateParams и ставите ES_RIGHT.
 or ES_MULTILINE
 
 "эту хохмочку я уже знаю" :))) От Вас :)))

> Тоже на 10 минут.
 Это Игорю Шевченко на 10 мин. :)))


 
Юрий Зотов ©   (2005-02-08 06:16) [7]

> Petr V. Abramov ©   (08.02.05 01:58) [6]

См. [2]. Для современныз систем ES_MULTILINE уже не требуется.


 
ККВ   (2005-02-08 07:26) [8]

procedure TMainFrm.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;


 
Goorus ©   (2005-02-21 17:17) [9]

Тоже недавно понадобилось, вот компонент:

type

 TTransparentEdit = class(TEdit)
 private
   procedure SetTransparent(const Value: Boolean);
   function GetTransparent: Boolean;
   procedure SetAlignment(const Value: TAlignment);
 protected
   FAlignment: TAlignment;
   procedure CreateParams(var Params: TCreateParams); override;
   procedure WndProc(var Message: TMessage); override;
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
 published
   property Alignment: TAlignment read FAlignment write SetAlignment;
   property Transparent: Boolean read GetTransparent write SetTransparent;
 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents("Goorus", [TTransparentEdit]);
end;

{ TTransparentEdit }

constructor TTransparentEdit.Create(AOwner: TComponent);
begin
 inherited;
 ControlStyle := ControlStyle + [csOpaque];
end;

procedure TTransparentEdit.CreateParams(var Params: TCreateParams);
const
 Alignments: array[TAlignment] of DWORD = (ES_LEFT, ES_RIGHT, ES_CENTER);
begin
 inherited CreateParams(Params);
 with Params do
 begin
   Style := Style or Alignments[FAlignment];
//    ExStyle := ExStyle or WS_EX_TRANSPARENT;
 end;
end;

destructor TTransparentEdit.Destroy;
begin
 inherited;
end;

function TTransparentEdit.GetTransparent: Boolean;
begin
 Result := not (csOpaque in ControlStyle);
end;

procedure TTransparentEdit.SetAlignment(const Value: TAlignment);
begin
 if FAlignment <> Value then
 begin
   FAlignment := Value;
   RecreateWnd;
 end;
end;

procedure TTransparentEdit.SetTransparent(const Value: Boolean);
begin
 if Transparent <> Value then
 begin
   if Value then
     ControlStyle := ControlStyle - [csOpaque]
   else
     ControlStyle := ControlStyle + [csOpaque];
   Invalidate;
 end;
end;

procedure TTransparentEdit.WndProc(var Message: TMessage);
begin
 with Message do
 if Msg = WM_ERASEBKGND then
 begin
   if Transparent then
   begin
     Brush.Style := bsSolid;
     SetBkColor(TWMEraseBkGnd(Message).DC, Color);
     SetBkMode(TWMEraseBkGnd(Message).DC, Windows.OPAQUE);
     FillRect(TWMEraseBkGnd(Message).DC, ClientRect, Brush.Handle);
   end
   else
   begin
//      SetBkMode(TWMEraseBkGnd(Message).DC, Windows.OPAQUE);
     Brush.Style := bsSolid;
//      FillRect(TWMEraseBkGnd(Message).DC, ClientRect, Brush.Handle);
   end;
   Result := 0;
   inherited;
 end
 else
 if Msg = WM_PAINT then
 begin
   Brush.Style := bsSolid;
   SetBkColor(TWMEraseBkGnd(Message).DC, Color);
   SetBkMode(TWMEraseBkGnd(Message).DC, Windows.OPAQUE);
   Result := 0;
   inherited;
 end
 else
 inherited;
end;

Просто поудаляй всё, что связано с Transparent, прозрачность у меня так и не получилась :(
Может кто поможет? Дело в том, что елси на WM_ERASEBKGND ставить  Brush.Style := bsClear, то форма за эдитом не перерисовывается, а фон текста всё-равно белый.



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

Форум: "Компоненты";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.039 c
6-1121237106
Vadik
2005-07-13 10:45
2005.11.06
TSocket (client and server)


14-1129204858
Ксардас
2005-10-13 16:00
2005.11.06
Транскрибация предложений


1-1129200448
BFG9k
2005-10-13 14:47
2005.11.06
Dephi стирает {$IFDEF}


3-1127233408
Galiaf
2005-09-20 20:23
2005.11.06
Поиск в столбце Name.


2-1129264419
nnn
2005-10-14 08:33
2005.11.06
Проблема с 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
Английский Французский Немецкий Итальянский Португальский Русский Испанский