Exterder Create do TForm

Delphi

06/08/2009

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:


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

Et.vinny

Curtidas 0

Respostas

Osocram

Osocram

06/08/2009

Ao meu ver o problema esta aqui.
  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
POSTAR