Как в TEdit расположить текст справа.
Идея заключается в том, как сделать правое
выравнивание текста в TEdit, не прибегая к
написанию нового компонента.
Для этого можно воспользоваться канвасом. Так
как TEdit не имеет канваса, то сперва мы создадим
TControlCanvas а затем, прикрепим TEdit к этому канвасу.
Теперь нам доступны все свойства и методы
TControlCanvas, поэтому мы спокойно можем настраивать в
нём текст. Ниже приведёна процедура, реализующая
всё вышесказанное.
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;
|