![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ввод в 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]Вы хотите написать новый компонент ?