Alinear a la derecha el contenido de un TControl (TEdit,...)
Artículo por Club Developers · 31 diciembre 2005
3785 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;


