Centralizar texto no edit

Delphi

10/03/2006

Como se faz para a pessoa ja digitar algo no edit e o texto iniciar do meio para a ponta?


Kroki

Kroki

Curtidas 0

Respostas

Dbergkamps

Dbergkamps

10/03/2006

espero que ajude (coletado no próprio fórum).
criar uma propriedade no edit onde você informe se é para centralizar ou não... do tipo CenterText (True/False);
depois, no OnPaint você verifica se a propriedade é true e dai desenha o texto em questão...
LeftText := Self.Width - Self.Canvas.Text.Widht(Texto) div 2;
TopText := valor;
WidthText := Self.Canvas.Text.Widht(Texto);
HeigthText := Self.Canvas.Text.Height(Texto);
Canvas.TextOut(Rect(TopText,WidthText,HeightText),Texto);
beleza ? a idéia é mais ou menos essa.. tem que ver certinho como fazer.. mas acho que é mais ou menos assim..
valeu


GOSTEI 0
Tekmicro

Tekmicro

10/03/2006

Caro colega, teria como ser mais objetivo e claro? Resumindo, teria como colocar o código para fazer este processo de centralizar textos no TEdit, porque já pesquisei por toda a Internet e não encontrei absolutamente nada sobre como fazer isto.

Se alguem realmente sabe, queira nos auxiliar.

Agradecemos! :wink:


GOSTEI 0
Siam

Siam

10/03/2006

Vc pode criar uma classe que descenda de TEdit, criar o Edit desta classe e ajustar o Alignment pelo CreateParams.


GOSTEI 0
Tekmicro

Tekmicro

10/03/2006

Poderia indicar onde eu possa encontrar o código para fazer isto? Porque nunca trabalhei com componentes, digo, no sentido de fazer modificações, e tenho uma enorme urgência em resolver isto. Caso não seja possivel, entregarei o projeto da forma que está mesmo!

Agradeço pela atenção


GOSTEI 0
Siam

Siam

10/03/2006

type
  TEditx = class(TEdit)
    procedure CreateParams(var Params: TCreateParams); override;
end;
procedure TEditx.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.Style := Params.Style + ES_Center;
end;
procedure TForm1.FormCreate(Sender: TObject);
var Ed:Teditx;
begin
  Ed        := TEditx.Create(Self);
  Ed.Parent := Self;
  Ed.Left   := 50;
  Ed.Top    := 30;
end;



GOSTEI 0
POSTAR