Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ввод в TEdit [D7, WinXP]


nusik1990 ©   (2008-02-26 18:31:00) 

Здравствуйте уважаемые участники форума. У меня вот какой вопрос: можно лишь сделать так что у компонента TEdit ввод  и редактирование начиналось с правой части а не слева как обычно, насколько я знаю такого свойства у TEdit просто  нетю
Можно ли как-нибудь решить эту проблему. Заранее всем спасибо :)


korneley   (2008-03-26 11:02:00) [1]


>  только там еще и возможность ввода только циферок была

а вот для циферок есть ES_NUMBER(как было в том примере не помню)

> Обычно так делают:
>Params.Style := Params.Style or EditControlStyles[FAlignment];

В принципе да, но у "ES_..." вроде только один бит выставлен в единицу, да и среда опять же, потому и "плюс" канает :)


{RASkov}   (2008-03-26 10:44:00) [2]

> [10] korneley ©   (26.03.08 10:30)
> Дык, как-то так было

Ага, почти так, только там еще и возможность ввода только циферок была, что здесь конечно же не нужно.
Только
> Params.Style := Params.Style +EditControlStyles[FAlignment];

Обычно так делают:
Params.Style := Params.Style orEditControlStyles[FAlignment];
В прочем в среду можно полюбому :)


korneley   (2008-03-26 10:30:00) [3]


> Могу "достать" ту ветку :)
Дык, как-то так было
type
 TMyEdit = class(TEdit)
 private
   FAlignment: TAlignment;
   procedure SetAlignment(const Value: TAlignment);
 protected
   procedure CreateParams(var Params : TCreateParams); override;
 published
   property Alignment: TAlignment read FAlignment write SetAlignment;
 end;

implementation

procedure TMyEdit.CreateParams(var Params: TCreateParams);
const
 EditControlStyles: array [TAlignment] of Cardinal = (ES_LEFT, ES_RIGHT, ES_CENTER);
begin
inherited;
Params.Style := Params.Style + EditControlStyles[FAlignment];
end;

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

Ну и, раз сегодня среда, то можно
TEdit = class(StdCtrls.TEdit)
...
И никаких встраиваний. Но только на сегодня! Ну вот, научил плохому :)


{RASkov}   (2008-03-26 09:44:00) [4]

> [5] TStas ©   (25.03.08 22:33)
> другое дело, что такой компонент в среду ставить, наверно, не стоит

А сегодня как раз - среда. Сегодня установку компонента делать не следует ;)
Кстати, я когда читал, то первая мысль была именно о дне недели)


> Как подозреваю, [4] туда же пытается ссылаться.

Могу "достать" ту ветку :)


Германн   (2008-03-26 01:02:00) [5]


> Leonid Troyanovsky ©   (25.03.08 22:44) [6]

"Война в Крыму, всё в дыму и ничего не видно".
Такую крылатую фразу я запомнил в молодости.


korneley   (2008-03-26 00:45:00) [6]


> если нужен едит, пишуший задом наперёд, то придётся, наверно,
>  самому писать
Не...Не всё. Вот сильно специфический случай на днях и случился. С TMaskEditк тому же. Перекрытие CreateParamsпривело к желаемомк результату. Как подозреваю, [4] туда же пытается ссылаться.


Leonid Troyanovsky   (2008-03-25 22:44:00) [7]


> TStas ©   (25.03.08 22:33) [5]

Ночь в Крыму, все в дыму и пушки стреляют.

--
Regards, LVT.


TStas   (2008-03-25 22:33:00) [8]

Написание компонента может и очень мало времени занять, другое дело, что такой компонент в среду ставить, наверно, не стоит. Ничего сильно сложного здесь нет, это обычное наследование, просто наследуют от компонета. Ну и помнить, что всё, что в published объявлено, появится в ObjectInspector'е, если компонент в среду установить.
Если нужно только изменить способ выравнивания текст, то можно взять мемо и выставить у него свойства и всё на этом завершить. Если нужен едит, пишуший задом наперёд, то придётся, наверно, самому писать, поскольку эдит берется из системы.


{RASkov}   (2008-02-27 20:04:00) [9]

http://www.delphimaster.ru/cgi-bin/forum.pl?n=18&id=1203488436


Семеныч   (2008-02-27 19:57:00) [10]

Попробуйте для начала обойтись малыми усилиями:

SetClassLong(Edit1.Handle, GCL_STYLE,
 GetClassLong(Edit1.Handle, GCL_STYLE) or ES_RIGHT);


nusik1990   (2008-02-27 17:43:00) [11]

Если другого способа нет то придется, просто я не очень разбираюсь в создании компонентов а точнее никогда не создавал и не знаю. А это сколько времени может занять (примерно), и что для этого необходимо?


DimaBr   (2008-02-27 08:34:00) [12]

Вы хотите написать новый компонент ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо