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

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

Выравнивание по левому краю в TEdit


solenko ©   (2006-04-10 17:21:00) 

Здравствуйте!
Пытаюсь сделать выравнивание в эдите по левому краю следующим образом:

type
 TNumEdit = class(TCustomEdit)
 public
   procedure CreateParams(var Params: TCreateParams); override;
end;

procedure TNumEdit.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 Params.Style := Params.Style ES_RIGHT or ES_NUMBER;
end;


Все вроде бы прекрастно работает, но только если форма создается на этапе старта приложения. Если же форма создается на этапе выполнения, то вылазит Access violation...

Проблемма именно в TNumEdit, так как после удаления их с формы все работает прекрастно.


Юрий Зотов   (2006-04-11 13:47:00) [1]

> Отладчиком не могу пройтись, т.к. сделал это в виде компонента.

??????????????
И что? Разве отладчиком нельзя пройти по коду компонента? Или формы? Тем более, что ошибка вылетает в run-time.

> Ошибка вылетает на вызове
> inherited Create(AOwner);
> формы, на которой расположен компонент (TNumEdit).

1. Если Вы не проходили код отладчиком, то как Вы это определили? А если проходили, то почему не включить "Use debug DCUs" (в опциях проекта), не нажать на этой строчке F7 (а не F8) и не локализовать ошибку ТОЧНО?

2. Если Вы не замещали конструктор формы, то как Вы ухитрились вставить в него эту строчку? А если замещали, то где его код?

3. Что-то Вы недоговариваете, потому что вот так все прекрасно работает:

type
 TNumEdit = class(TCustomEdit)
 protected
   procedure CreateParams(var Params: TCreateParams); override;
 end;

procedure TNumEdit.CreateParams(var Params: TCreateParams);
begin
 inherited;
 Params.Style := Params.Style or ES_RIGHT or ES_NUMBER
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 TNumEdit.Create(Self).Parent := Self
end;


solenko   (2006-04-11 13:16:00) [2]

Пропущено только здесь.
Отладчиком не могу пройтись, т.к. сделал это в виде компонента. Ошибка вылетает на вызове
inherited Create(AOwner);
формы, на которой расположен компонент (TNumEdit).
Тут приведен afrnbxtcrb полный код компонента -- никаких других свойств/методов я не переопределял. Может необходимо явно определить конструктор в TNumEdit?


Юрий Зотов   (2006-04-10 22:41:00) [3]

1. Пропущено OR. Видимо, только здесь, а не в рабочем коде.
2. Похоже, ошибка где-то в другом месте. Пройдите отладчиком.


Наверх

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