Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.043 c
1-79847
Серёга
2004-02-10 18:55
2004.02.25
Файлы *.dcu


1-79840
Митяй2
2004-02-10 19:55
2004.02.25
Корявая загрузка XP-шных иконок.


1-79944
Ш-К
2004-02-09 16:15
2004.02.25
Абсолютные координаты.


1-79972
}|{yk
2004-02-13 16:53
2004.02.25
handle в datamodule


1-79889
Сергей Петров
2004-02-10 01:20
2004.02.25
Проблема с midas.dll





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский