Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.25;
Скачать: CL | DM;

Вниз

Align у TEdit   Найти похожие ветки 

 
Budy ©   (2004-02-09 15:20) [0]

Приветствую всех!
Как можно сделать чтоб значение Text у TEdit выводилось справа, а не слева?
Заранее спасибо!


 
Serge ©   (2004-02-09 15:24) [1]

Используй ТМемо с WantReturns =False.


 
Budy ©   (2004-02-09 20:00) [2]

Нет, к сожалению TMemo не подойдет. Нужна одна строка ввода!
Но всеравно спасибо за совет!


 
Баралгин   (2004-02-10 01:55) [3]

Можно эдит засунуть в Panel и панели присвоить Align, допустим Bottom, а чёб она и по длине нормальная была (при изменении размера формы), то в В обработчик формы "Resize" напиши Edit1.widht:=Panel1.widht-1;(панель в которой Эдит)


 
reticon ©   (2004-02-10 02:29) [4]

создать наследника от TEdit и добавить ему свойство Alignment :)

Alignment = (taCenter, taLeftJustify, taRightJustify)


 
Defunct   (2004-02-10 03:59) [5]

Чтобы долго не мучаться можно поставить поверх Edit1 еще один Edit2:

С инициализацией
Edit1.OnFocus := OnEdit1Focus;
Edit2.BorderStyle:=bsNone;
Edit2.Parent := Edit1;
Edit2.Width := 2;
Edit2.Top := 2;
Edir2.Width := 2;
Edit2.Left := Edit1.CleintWidth - Edit2.Width;
Edit2.Height := Edit1.ClientHeight;

при вводе текста масштабировать размер Edit2 и положение Edit2

Procedure OnEdit2Change(Sender: TObject);
Begin
Edit2.Width := Edit2.Canvas.TextWidth(Edit2.Text);
Edit2.Left := Edit1.ClientWidth - Edit2.Width;
// Обслуживание вводимого текста
End;

И добавить процедуру OnEdit1Focus, которая запрещает фокусировку в Edit1.
Procedure OnEdit1Focus(Sender: TObject);
Begin
CanFocus := False;
End;


 
Юрий Зотов ©   (2004-02-10 04:32) [6]

Вот простенький компонентик, который реализует [4]

type
TMyEdit = class(TEdit)
private
FAlignment: TAlignment;
procedure SetAlignment(const Value: TAlignment);
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyPress(var Key: Char); override;
published
property Alignment: TAlignment
read FAlignment write SetAlignment default taLeftJustify;
end;

procedure TMyEdit.CreateParams(var Params: TCreateParams);
const
AlignmentFlags: array[TAlignment] of DWORD =
(ES_LEFT, ES_RIGHT, ES_CENTER);
begin
inherited;
if FAlignment <> taLeftJustify then
with Params do
Style := Style and not (ES_LEFT or ES_WANTRETURN)
or AlignmentFlags[FAlignment] or ES_MULTILINE
end;

procedure TMyEdit.KeyDown(var Key: Word; Shift: TShiftState);
begin
if Key in [VK_PRIOR, VK_NEXT, VK_UP, VK_DOWN] then
Key := 0
else inherited
end;

procedure TMyEdit.KeyPress(var Key: Char);
begin
if Key = Char(VK_RETURN) then
Key := #0
else inherited
end;

procedure TMyEdit.SetAlignment(const Value: TAlignment);
begin
if FAlignment <> Value then
begin
FAlignment := Value;
RecreateWnd
end
end;


 
Defunct   (2004-02-10 04:49) [7]

Вот проверенный пример:

procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.OnClick :=Edit1Click;
Edit1.OnEnter := Edit1Enter;
Edit2.BorderStyle:=bsNone;
Edit2.Parent := Edit1;
Edit2.Width := 8;
Edit2.Top := 1;
Edit2.Left := Edit1.ClientWidth - Edit2.Width + 4;
Edit2.Height := Edit1.ClientHeight;
Edit2.OnChange := Edit2Change;
end;

procedure TForm1.Edit1Enter(Sender: TObject);
begin
Edit2.SetFocus;
end;

procedure TForm1.Edit1Click(Sender: TObject);
begin
Edit2.SetFocus;
end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
Edit2.Width := Canvas.TextWidth(Edit2.Text)+8;
Edit2.Left := Edit1.ClientWidth - Edit2.Width + 4;
end;


 
Budy ©   (2004-02-10 07:50) [8]

Хорошо, верных вариантов много! Испробовал все.
Больше мне понравился вариант [7].
Но вот проблемка есть, как же сделать, чтоб курсора в Edit1 не было? А то щелкаешь по Edit1, сначала в нем моргнет, потом уже в Edit2.



Страницы: 1 вся ветка

Текущий архив: 2004.02.25;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
14-80208
DeMoN-777
2004-01-30 13:00
2004.02.25
Проблемы с WinXP


1-80009
-=Zerg=-
2004-02-12 10:42
2004.02.25
Как вернуть курсор?


14-80227
_none_
2004-02-04 11:09
2004.02.25
автаматизация управления проектами


1-79901
Сергей Петров
2004-02-10 00:07
2004.02.25
Windows XP наглухо зависает при выполнении кода


14-80268
Вячеслав
2004-02-02 18:47
2004.02.25
Windows 98 RAM