Exterder Create do TForm
Estou alterando o create de um TForm, para passar no create uma classe que estou montando. O problema é quando eu tento compilar dá os seguintes erros:
[Error] FrmNavigatior.pas(36): Declaration of ´Create´ differs from previous declaration
[Error] FrmNavigatior.pas(116): Incompatible types
[Fatal Error] FrmPrincipal.pas(7): Could not compile used unit ´FrmNavigatior.pas´
Código da Classe:
Código do Form:
[/code]
[Error] FrmNavigatior.pas(36): Declaration of ´Create´ differs from previous declaration
[Error] FrmNavigatior.pas(116): Incompatible types
[Fatal Error] FrmPrincipal.pas(7): Could not compile used unit ´FrmNavigatior.pas´
Código da Classe:
unit unClasses;
interface
uses Variants, Classes;
type
TFormExtended = class
private
FNome : String;
public
constructor Create();
end;
implementation
{ TFormExtended }
constructor TFormExtended.Create;
begin
inherited Create;
end;
end.
Código do Form:
unit FrmNavigatior;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Buttons, FrmImagens, ComCtrls, ToolWin, DB, DBClient,
ImgList, unClasses;
type
TFormNavigatior = class(TForm)
tobBotoes: TToolBar;
sepLeft: TToolButton;
btnInsert: TToolButton;
btnEdit: TToolButton;
edtDelete: TToolButton;
btnPost: TToolButton;
btnCancel: TToolButton;
sepCenter: TToolButton;
btnFirst: TToolButton;
btnPrior: TToolButton;
btnNext: TToolButton;
btnLast: TToolButton;
sepRigth: TToolButton;
btnRefresh: TToolButton;
FCDS : TClientDataSet;
imgListBotoes: TImageList;
procedure btnInsertClick(Sender: TObject);
procedure btnEditClick(Sender: TObject);
procedure edtDeleteClick(Sender: TObject);
procedure btnPostClick(Sender: TObject);
private
//
public
{ Public declarations }
constructor Create(AOwner: TComponent; Campo : TFormExtended); override;
class function Execute:boolean;
published
property CDS : TClientDataSet read FCDS write FCDS;
end;
var
FormNavigatior: TFormNavigatior;
implementation
{$R *.dfm}
{ TFormNavigatior }
class function TFormNavigatior.Execute: boolean;
var
vForm: TForm;
begin
result := false;
vForm := TForm(Self);//.Create(nil);
try
if vForm.ShowModal = mrOK then
result := true;
finally
vForm.Release;
vForm := nil;
end;
end;
procedure TFormNavigatior.btnInsertClick(Sender: TObject);
begin
{ Validação }
try
FCDS.Append;
Except
on E : Exception do
begin
//prException(E);
end;
End;
end;
procedure TFormNavigatior.btnEditClick(Sender: TObject);
begin
{ Validação }
try
FCDS.Edit;
Except
on E : Exception do
begin
//prException(E);
end;
End;
end;
procedure TFormNavigatior.edtDeleteClick(Sender: TObject);
begin
{ Validação }
try
//if Application.MessageBox(´Deseja mesmo apagar o registro selecionado?´, _gstrEmpresa, MB_ICONQUESTION + MB_YESNO) = IDNO then exit;
FCDS.Delete;
Except
on E : Exception do
begin
//prException(E);
end;
End;
end;
procedure TFormNavigatior.btnPostClick(Sender: TObject);
begin
{ Validação }
end;
constructor TFormNavigatior.Create(AOwner: TComponent;
Campo: TFormExtended);
begin
inherited;
//
end;
end.
[/code]
Et.vinny
Curtidas 0
Respostas
Osocram
06/08/2009
Ao meu ver o problema esta aqui.
Para se fazer override (sobreescrever) um metodo, este metodo tem q exister na classe Pai... e esse metodo vc que esta fazendo no momento. Então tira o override;
E o lance ta aqui
fazendo o Inherited create(aowner); vc força a executar a herança deste metodo.. mesmo não tendo usado override;
constructor Create(AOwner: TComponent; Campo : TFormExtended); override;
Para se fazer override (sobreescrever) um metodo, este metodo tem q exister na classe Pai... e esse metodo vc que esta fazendo no momento. Então tira o override;
E o lance ta aqui
constructor TFormNavigatior.Create(AOwner: TComponent; Campo: TFormExtended); begin inherited create(aowner); ...
fazendo o Inherited create(aowner); vc força a executar a herança deste metodo.. mesmo não tendo usado override;
GOSTEI 0