Форум: "Основная";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.031 c