Форум: "Компоненты";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];
ВнизВыравнивание по левому краю в TEdit Найти похожие ветки
← →
solenko © (2006-04-10 17:21) [0]Здравствуйте!
Пытаюсь сделать выравнивание в эдите по левому краю следующим образом:
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-10 22:41) [1]1. Пропущено OR. Видимо, только здесь, а не в рабочем коде.
2. Похоже, ошибка где-то в другом месте. Пройдите отладчиком.
← →
solenko © (2006-04-11 13:16) [2]Пропущено только здесь.
Отладчиком не могу пройтись, т.к. сделал это в виде компонента. Ошибка вылетает на вызовеinherited Create(AOwner);
формы, на которой расположен компонент (TNumEdit).
Тут приведен afrnbxtcrb полный код компонента -- никаких других свойств/методов я не переопределял. Может необходимо явно определить конструктор в TNumEdit?
← →
Юрий Зотов © (2006-04-11 13:47) [3]> Отладчиком не могу пройтись, т.к. сделал это в виде компонента.
??????????????
И что? Разве отладчиком нельзя пройти по коду компонента? Или формы? Тем более, что ошибка вылетает в 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;
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c