Консультация № 68537
25.12.2006, 15:54
0.00 руб.
0 2 2
Как в Delphi 7 сделать в Edit ввод справа-налево (BiDiMode не действует, хотя в Delphi 2005 действовал...)

Обсуждение

Неизвестный
25.12.2006, 16:18
общий
это ответ
Здравствуйте, Томша Павел!

В приложении смотрите процедуру, при помощи которой реализуется ввод справа-налево.

Только для полной его функциональности создайте обработчик <font color=purple><b>Edit1Change</b></font> для своего поля ввода (<font color=purple><b>Edit1</b></font>), в который необходимо поместить строку вызова соответствующей процедуры:
<code>
procedure TForm1.Edit1Change(Sender: TObject);
begin
RightEdit(edit1);
end;
</code>

Хотя можно и легче - это воспользоваться сторонними компонентами....

Good Luck!!!

Приложение:
procedure RightEdit(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;
Неизвестный
26.12.2006, 09:22
общий
это ответ
Здравствуйте, Томша Павел!

type
TEdit = class(StdCtrls.TEdit)
procedure CreateParams(var Params: TCreateParams); override;

//Все Edit описанные ниже будут иметь ввод справа

type
TForm1 = class(TForm)
Edit1: TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;
procedure TEdit.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or ES_RIGHT;
end;
Форма ответа