Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Переопределение Create у TForm / 9 сообщений из 9, страница 1 из 1
12.09.2003, 10:30
    #32263264
Tаrantino
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переопределение Create у TForm
Пытаюсь переопределить конструктор у TForm, раньше у меня код работал, сейчас в Делфи 7 вылезает ошибка, код такой:

TFerm_Table = class(TForm)
Panel1: TPanel;
private
{ Private declarations }
fIsParam: Boolean ;
public
{ Public declarations }
constructor Create(AOwner: TComponent; aIsParam: Boolean); override;
end;


Ошибка такая: Declaration of 'Create' differs from previous declaration
...
Рейтинг: 0 / 0
12.09.2003, 10:42
    #32263293
Tаrantino
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переопределение Create у TForm
В общесм я другой контструктор сделал, с другим именем
...
Рейтинг: 0 / 0
12.09.2003, 10:46
    #32263300
olga1999
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переопределение Create у TForm
Вот определение конструктора у TCustomForm
constructor Create(AOwner: TComponent); override;
Поэтому, если ты его переопределяешь, ты должен сего определить таким же.
Другое дело, что ты хочешь использовать конструктор другого вида, тогда:
constructor Create(AOwner: TComponent); overload; override;
constructor Create(AOwner: TComponent; aIsParam: Boolean); overload;
...
Рейтинг: 0 / 0
12.09.2003, 11:32
    #32263398
MalkoLinge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переопределение Create у TForm
Вообщето ДЛЯ ФОРМЫ лучше использовать событие ONCreate. А вот новый констуктор если уже и решено вводить то делать его нужно виртуальным и перегружать .
...
Рейтинг: 0 / 0
12.09.2003, 11:57
    #32263448
Андрей Бабенко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переопределение Create у TForm
2 MalkoLinge:
А откуда такая категоричность -
"Вообщето ДЛЯ ФОРМЫ лучше использовать событие ONCreate" ?

Другое дело, что Борланд не рекомендует (мягко говоря) совместное использование конструктора и OnCreate.
...
Рейтинг: 0 / 0
12.09.2003, 12:19
    #32263496
MalkoLinge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переопределение Create у TForm
2 Андрей Бабенко
Может быть ты сам себе и ответил ?

Более изящно написать метод вроде

TFerm_Table = class(TForm)
Panel1: TPanel;
private
{ Private declarations }
fIsParam: Boolean ;
public
{ Public declarations }
procedure Execute(aIsParam: Boolean);
end;

Код такой :
Ferm_Table:=TFerm_Table.Create(...)
Ferm_Table.Execute(..).

Хотя раз уже на то пошло то судя по всему лучше сделать псевдовизуальный компонент ????????
Тогда вообще все красивше ???? В общем давайте пофлемим ??
...
Рейтинг: 0 / 0
12.09.2003, 14:17
    #32263746
Tаrantino
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переопределение Create у TForm
Сразу скажу что мне это нужно для MDIChild формы, всем известно что после того как я создал она сразу и показывается, в событии OnShow происходит открытие запроса с определенным парметром который передаются из главной формы.

Ну в общем во втором своем сообщение я сказал что сделал и все уже работает
...
Рейтинг: 0 / 0
12.09.2003, 19:30
    #32264121
Андрей Бабенко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переопределение Create у TForm
2 MalkoLinge:
Я говорил о том, что написано в Helpe:

Use OnCreate to perform special processing when the form is created and is invoked by TCustomForm’s constructor. Either implement this event or override the constructor of the form; do not do both. Any objects created in the OnCreate event should be freed by the OnDestroy event.

И с чем столкнулся на практике...
А идея вашего "псевдовизуального" мне, что-то непонятна...
чем, например вызов вашего метода Execute(aIsParam: Boolean) лучше, чем передача паретра aIsParam в констукторе?

Например у вас есть форма просмотра простой выборки из базы, помоему красивtе сделать конструктор и передавать в него SQL

Frm1:= TFrm1.CreateFrm(Self, 'select * from table1');
Frm1.showmodal;
.....

чем
Frm1:=TFrm1.Create(Self);
Frm1.Query1.Sql.add('select * from table1'); //ну или здесь будет некий ваш метод
ну и т.д.

Пофлеймим так пофлемим... :-)
...
Рейтинг: 0 / 0
12.09.2003, 23:54
    #32264216
Ray Adams
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переопределение Create у TForm
Если ты меняеш параметры у Create то обьявлять ее надо как reintroduce

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
TFerm_Table = class(TForm) 
Panel1: TPanel; 
private 
{ Private declarations } 
fIsParam: Boolean ; 
public 
{ Public declarations } 
constructor Create(AOwner: TComponent; aIsParam: Boolean); reintroduce; 
end; 
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Переопределение Create у TForm / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]