Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2007, 21:49   #1
alikon1
Пользователь
 
Регистрация: 07.10.2007
Сообщений: 22
По умолчанию Выравнивание текста, моргающий курсор

Необходимо выравнять текст в поле Edit по правой стороне. Не получилось этого сделать, но нашел в интернете, что вместо Edit надо Memo использовать. А возможно убрать моргающий курсор (|), чтоб было как в калькуляторе Windows?
alikon1 вне форума Ответить с цитированием
Старый 14.11.2007, 15:30   #2
Rapid
Форумчанин
 
Аватар для Rapid
 
Регистрация: 01.09.2007
Сообщений: 747
По умолчанию

Вместо Мемо можно использовать StaticText, свойства задать такие:
Авторазмер-нет
Выравнивание текста-по правой стороне
Можно задать к нить стиль рамок, цвет и по виду он получиться как Едит
В событии OnKeyPress Формы ставь следующее
StaticText1.Caption:=StaticText1.Ca ption+Key;
(Только тут одна проблема, при нажатии клавиши BackSpase пишутся непонятные символы) Но наверно проблему можно решить.
Никому не верьте.
Rapid вне форума Ответить с цитированием
Старый 14.11.2007, 16:36   #3
СТРАННИК
Пользователь
 
Аватар для СТРАННИК
 
Регистрация: 20.12.2006
Сообщений: 43
По умолчанию

В Edit тоже можно сделать выравнивание:

TEdit1 = class(TEdit)
public
procedure CreateParams(var Params: TCreateParams); Override;
end;

procedure TEdit1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or ES_MULTILINE or ES_RIGHT;
end;
Если бы я был на столько умён, чтобы ответить на все вопросы самостоятельно, я бы не спрашивал...
СТРАННИК вне форума Ответить с цитированием
Старый 14.11.2007, 16:47   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Класс TEdit является потомком TCustomEdit в котором есть процедура задания параметров CreateParams, но ее зачем-то поместили в раздел protected. Следовательно, чтобы не править модуль StdCtrls поступаем следующим образом:
создаем потомка от TEdit
Код:
TRightEdit = class(TEdit)
protected
  procedure CreateParams(var Params: TCreateParams); override;
end;
добавляем Edit1: TRightEdit; в раздел public класса формы
задаем выравнивание по правому краю
Код:
procedure TRightEdit.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style:=Params.Style or ES_RIGHT;
end;
настраиваем параметры и показываем компонент на форме
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1:=TRightEdit.Create(self);
  Edit1.Top:=100;
  Edit1.Left:=100;
  Edit1.Width:=121;
  Edit1.Height:=21;
  Edit1.ReadOnly:=true;
  Edit1.Parent:=self;
end;
В разделе uses модуля не забываем про StdCtrls

Убрать курсор можно убрав фокус ввода с Edit

Последний раз редактировалось _Dmitry; 14.11.2007 в 17:13.
_Dmitry вне форума Ответить с цитированием
Старый 15.11.2007, 11:44   #5
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Лучше убрать каретку так:
Код:
procedure TForm1.FormPaint(Sender: TObject);
begin
  HideCaret(Edit1.Handle);
end;
_Dmitry вне форума Ответить с цитированием
Старый 15.11.2007, 15:48   #6
alikon1
Пользователь
 
Регистрация: 07.10.2007
Сообщений: 22
По умолчанию

Спасибо. Все как надо теперь работает.
alikon1 вне форума Ответить с цитированием
Старый 17.04.2009, 00:41   #7
СТРАННИК
Пользователь
 
Аватар для СТРАННИК
 
Регистрация: 20.12.2006
Сообщений: 43
По умолчанию

Цитата:
Сообщение от _Dmitry Посмотреть сообщение
Класс TEdit является потомком TCustomEdit в котором есть процедура задания параметров CreateParams, но ее зачем-то поместили в раздел protected. Следовательно, чтобы не править модуль StdCtrls поступаем следующим образом:
создаем потомка от TEdit
Код:
TRightEdit = class(TEdit)
protected
  procedure CreateParams(var Params: TCreateParams); override;
end;
добавляем Edit1: TRightEdit; в раздел public класса формы
задаем выравнивание по правому краю
Код:
procedure TRightEdit.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style:=Params.Style or ES_RIGHT;
end;
настраиваем параметры и показываем компонент на форме
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1:=TRightEdit.Create(self);
  Edit1.Top:=100;
  Edit1.Left:=100;
  Edit1.Width:=121;
  Edit1.Height:=21;
  Edit1.ReadOnly:=true;
  Edit1.Parent:=self;
end;
В разделе uses модуля не забываем про StdCtrls

Убрать курсор можно убрав фокус ввода с Edit


Блин... Я по моему то же самое написал
Если бы я был на столько умён, чтобы ответить на все вопросы самостоятельно, я бы не спрашивал...
СТРАННИК вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выравнивание текста SeregaIRK Общие вопросы Delphi 4 21.07.2008 15:17
Выравнивание строки Dj_smart Общие вопросы Delphi 3 01.04.2008 09:40
курсор ввода текста Михаил Юрьевич Общие вопросы Delphi 9 03.03.2008 15:32
выравнивание текста по ширине Алёна Общие вопросы Delphi 6 18.04.2007 11:31