Alinear a la derecha el contenido de un TControl (TEdit,...)
Artículo por Club Developers · 31 diciembre 2005
3208 vistas
El truco está en usar la propiedad BiDiMode de TControl (ancestro de todos los componentes visuales).
Este modo bidireccional especifica la dirección de la lectura del texto. Localizando la aplicación podemos llegar a alinear el texto a la derecha.
En el evento OnCreate:
Esto funciona con la mayorÃa de los descendientes de TControl: TEdit, TMaskEdit, TListBox...
Pero en el caso de TEdit podemos crear un componente que nos acepte el alineamiento a la derecha:
Este modo bidireccional especifica la dirección de la lectura del texto. Localizando la aplicación podemos llegar a alinear el texto a la derecha.
En el evento OnCreate:
delphi
{ indica una localización de oriente medio } SysLocale.MiddleEast := True; { ejemplo con un TEdit } MyEdit.BiDiMode := bdRightToLeft;
Esto funciona con la mayorÃa de los descendientes de TControl: TEdit, TMaskEdit, TListBox...
Pero en el caso de TEdit podemos crear un componente que nos acepte el alineamiento a la derecha:
delphi
type  TMiEdit = class(TEdit)  private   FTextAlign: TAlignment;   procedure SetTextAlign(Value: TAlignment);  protected   procedure CreateParams(var Params: TCreateParams); override;  public   constructor Create(AOwner: TComponent); override;  published   property TextAlignment: TAlignment read FTextAlign write SetTextAlign;  end; implementation constructor TMiEdit.Create(AOwner: TComponent); begin  inherited;  FTextAlign := taLeftJustify; end; procedure TMiEdit.CreateParams(var Params: TCreateParams); const Alignments: array[TAlignment] of Word = (ES_LEFT, ES_RIGHT, ES_CENTER); begin inherited CreateParams(Params); Params.Style := Params.Style or Alignments[TextAlignment]; end; procedure TMiEdit.SetTextAlign(Value: TAlignment); begin  if FTextAlign <>Value then   Begin   FTextAlign := Value;   RecreateWnd;  End; end;