-
...
public
constructor Create(AOwner: TComponent); overload;
end; Собственно вопрос... :o)
-
= class(?)
Собссно контрвопрос)
-
вопрос какой то странный, я его собственно и не вижу, в чем он?
overload - с помощью этой директивы ты можешь объявлять одноименные методы/процедуры с разным набором параметров
override - эта деректива перекрывает реализацию виртуального/динамического метода/конструктора/деструктора/(да и мало ли чего) родительского класса и обозначает, что у наследника она будет своя
и в чем'же твой вопрос после ликбеза?
-
> User1 (12.05.08 16:02)
1. Без разницы, если инстранцировать будешь как TForm1.Create.
2. Если инстранцировать будешь через Application.CreateForm(TForm1, Form1), тогда Override, в случае необходимости вызова твоего конструктора.
-
> вопрос какой то странный
Ну, почему не спросить stdcall или reitroduce, сабжевые слова просто похожи, отсюда и вопрос что ли ....
-
Сори на писал только сейчас смог к ветке вернуться.... > Сергей М. © (12.05.08 16:06) [1]
да, class > Palladin © (12.05.08 16:11) [2]
> override - эта деректива перекрывает реализацию виртуального/динамического > метода/конструктора/деструктора/(да и мало ли чего) родительского > класса и обозначает, что у наследника она будет своя
Совершенно верно ! :o) Только не найду ошибки, когда делаю override вылетает вот что: Declaration of 'Create' differs from previous declaration. Непойму почему...
-
> да, class
ЧЕЙ наследник этот твой класс ?
-
> User1 (12.05.08 18:57) [5]
Вы не поняли. Сергей спрашивал, от какого класса наследуется Ваш класс. Точнее, нужно знать объявление его конструктора - от этого зависит ответ на Ваш вопрос.
-
> Юрий Зотов © (12.05.08 19:05) [7]
TForm
-
Дочернее окно. MDIChild
-
Тогда override.
-
> Юрий Зотов © (12.05.08 19:13) [10]
Как раз при подстановке этого оператора и выскакивает: Declaration of 'Create' differs from previous declaration.
-
Прошу прощения ребята ! Нашел ошибку, а скорее недоучет. Дело в том, я забыл обозначить, что передается еще один параметр ARec : constructor Create(AOwner: TComponent; ARec: THandBook); overload ; а в этом случае поможет только overload . Вопрос снят !
-
Потому и соответствующее сообщение : Declaration of 'Create' differs from previous declaration.
-
overload - полиморфизм, для разных параметров в методе. override - переопределяем сам метод. reintroduce - просто убирает предупреждение компилятора.
> Declaration of 'Create' differs from previous declaration.
Ессно ты же параметры у Create меняешь - этого лучше не делать. inherited конструктор вызвать не забудь только.
-
> inherited конструктор вызвать не забудь только.
C этим норм. А вообще суечусь для справочника. Тип такого чтот: unit uHandBook;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, ExtCtrls, ComCtrls, ToolWin, DBCtrls, Grids, DBGridEh,
DB, StdCtrls;
type
TShowHandBook = (shbUnknown, shbRequisite, shbEmployee, shbJobTitle, shbUser, shbRole,
shbLog, shbPlace, shbPoint, shbTpPoint, shbStreet, shbTpStreet, shbHome,
shbTpHome, shbPost, shbManagement, shbProperty, shbOtherRem, shbEntrance,
shbApartment, shbRoom, shbTpRoom);
PHandBook = ^THandBook;
THandBook = packed record
ShowType: TShowHandBook;
case Integer of
0: (
GoToIndex: Integer);
end;
TfHandBook = class(TForm)
pnl: TPanel;
sBtnClose: TSpeedButton;
sBtnPrint: TSpeedButton;
sBtnHelp: TSpeedButton;
tb: TToolBar;
sbInfo: TStatusBar;
sb: TStatusBar;
nv: TDBNavigator;
tSprt1: TToolButton;
tBtnFilter: TToolButton;
grd: TDBGridEh;
ds: TDataSource;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDeactivate(Sender: TObject);
procedure FormHide(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FRec: THandBook;
public
constructor Create(AOwner: TComponent; ARec: THandBook); overload;
end;
function CreateHandBook(AOwner: TComponent; ARec: THandBook): Boolean;
resourcestring
SUnknown = 'Íåèçâåñòíûé ñïðàâî÷íèê';
SRequisite = 'Ñïðàâî÷íèê ðåêâèçèòû ïðåäïðèÿòèÿ';
SEmployee = '';
SJobTitle = '';
SUser = '';
SRole = '';
SLog = '';
SPlace = '';
SPoint = '';
STpPoint = '';
SStreet = '';
STpStreet = '';
SHome = '';
STpHome = '';
SPost = '';
SManagement = '';
SProperty = '';
SOtherRem = '';
SEntrance = '';
SApartment = '';
SRoom = '';
STpRoom = '';
var
fHandBook: TfHandBook;
implementation
uses
uDm, IniFiles, uConstants, uDbs;
function CreateHandBook(AOwner: TComponent; ARec: THandBook): Boolean;
begin
if Assigned(fHandBook) then
if (fHandBook.FRec.ShowType <> ARec.ShowType) or
(fHandBook.FRec.GoToIndex <> ARec.GoToIndex) then
fHandBook.Free
else
if not (fHandBook.WindowState in [wsNormal, wsMaximized]) then
fHandBook.WindowState := wsNormal
else
fHandBook.Show;
Result := True;
try
if not Assigned(fHandBook) then
fHandBook := TfHandBook.Create(AOwner, ARec);
except
Result := False;
fHandBook.Free;
fHandBook := nil;
end;
end;
constructor TfHandBook.Create(AOwner: TComponent; ARec: THandBook);
begin
inherited Create(AOwner);
FRec := ARec;
case FRec.ShowType of
shbUnknown:
begin
Close;
end;
shbRequisite:
begin
Caption := SRequisite;
ds.DataSet := dm.qRequisite;
end;
else
begin
end;
end;
end;
procedure TfHandBook.FormCreate(Sender: TObject);
begin
if OpenDataSet(ds.DataSet) then
begin
end
else
begin
end;
end;
procedure TfHandBook.FormShow(Sender: TObject);
begin
end;
procedure TfHandBook.FormPaint(Sender: TObject);
begin
end;
procedure TfHandBook.FormActivate(Sender: TObject);
begin
end;
procedure TfHandBook.FormResize(Sender: TObject);
begin
end;
procedure TfHandBook.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
end;
procedure TfHandBook.FormClose(Sender: TObject; var Action: TCloseAction);
begin
end;
procedure TfHandBook.FormDeactivate(Sender: TObject);
begin
end;
procedure TfHandBook.FormHide(Sender: TObject);
begin
end;
procedure TfHandBook.FormDestroy(Sender: TObject);
begin
end;
end.
-
Чему вас только Пачеко учил...
-
> Игорь Шевченко © (12.05.08 20:32) [16]
И чему же... ? :o)
-
begin inherited Create(AOwner); FRec := ARec; case FRec.ShowType of shbUnknown: begin Close; end; shbRequisite: begin Caption := SRequisite; ds.DataSet := dm.qRequisite; end; else begin //Íåèçâåñòíûé âèä âûçûâàåìîãî ñïðàâî÷íèêè. end; end; end;
Какой Close в OnCreate ? И в OnShow тоже нельзя. Проверяй перед созданием формы, а не в ней. Или Error взводи.
-
> tesseract © (12.05.08 20:36) [18]
Честно, налобал даже не проверял.... :o) просто "мысль гения" пришла, а сому "последовательность" shbUnknown даже ниразу не вызывал... :o)))
|