Fórum Herança Visual e Padronização. #563836
10/10/2016
0
Estou aprendendo a usar um form como padrão e estou com dúvidas sobre polimorfismo. Meu projeto é um cadastro de estado, cidade e endereço, então criei um form padrão e uma classe padrão (implementada abaixo). Minha dúvida é: Como utilizar esses métodos (add, delete, update...) nas classes herdeiras? Sabendo que preciso armazenar todos os dados na memória e ter acesso a cada um deles. Eu tentei criar uma classe herdeira, mas não sei se implemento tudo novamente e crio arrays separadas para cada dado, array of TEstado, array of TCidade...
Espero que entendam minha dúvida.
unit uClassPadrao;
interface
uses SysUtils, Vcl.Dialogs;
type
TPadrao = class
private
FCodigo: Integer;
public
property Codigo: Integer read FCodigo write FCodigo;
end;
TListaPadrao = class
private
public
procedure Add(prObjeto: TPadrao); Virtual;
function Read(prCodigo: Integer):Integer; Virtual;
procedure Update(prObjeto: TPadrao); Virtual;
procedure Delete(prCodigo: Integer); Virtual;
end;
implementation
uses uHome;
{ TListaPadrao }
procedure TListaPadrao.Add(prObjeto: TPadrao);
begin
SetLength(frHome.FListaPadrao, Length(frHome.FListaPadrao) + 1);
frHome.FListaPadrao[Length(frHome.FListaPadrao)-1]:= prObjeto;
frHome.FListaPadrao.
end;
procedure TListaPadrao.Delete(prCodigo: integer);
var
wIndex: Integer;
wSave: TPadrao;
begin
wIndex:= prCodigo;
wSave:= frHome.FListaPadrao[Length(frHome.FListaPadrao)-1];
frHome.FListaPadrao[Length(frHome.FListaPadrao)-1]:= frHome.FListaPadrao[wIndex];
while (wIndex < Length(frHome.FListaPadrao)-2) do
begin
frHome.FListaPadrao[wIndex]:= frHome.FListaPadrao[wIndex+1];
wIndex:= wIndex + 1;
end;
frHome.FListaPadrao[wIndex]:= wSave;
SetLength(frHome.FListaPadrao, Length(frHome.FListaPadrao) -1);
end;
function TListaPadrao.Read(prCodigo: integer): integer;
var
wCont: Integer;
wCodigo: integer;
begin
Result := -1;
wCont:= 0;
if frHome.FListaPadrao <> nil then
begin
while wCont < Length(frHome.FListaPadrao) do
begin
if frHome.FListaPadrao[wCont].Codigo = prCodigo then
begin
Result:= wCont;
end;
wCont:= wCont + 1;
end;
end;
end;
procedure TListaPadrao.Update(prObjeto: TPadrao);
var
wIndex: Integer;
begin
wIndex := Read(TPadrao(prObjeto).Codigo);
if (wIndex > -1) then
frHome.FListaPadrao[wIndex] := prObjeto;
end;
end.
Luana Cardoso
Curtir tópico
+ 0Posts
10/10/2016
Jones Granatyr
Gostei + 0
11/10/2016
Luana Cardoso
Minha dúvida é a seguinte, ali no método "Add" eu tenho um array de TPadrao armazenando objetos do tipo TPadrao, porém, quando armazeno os herdeiros nesse array apenas o código é armazenado. Quero saber como posso armazenar as demais informações do objeto como Fnome, FDescricao...
Gostei + 0
03/11/2016
Araujo Junior.
Outra possibilidade seria voce sobescrever o método nas classes que herdam, declarando apenas os métodos na classe principal como abstratos:
procedure Add(prObjeto: TPadrao); Virtual; asbstract;
function Read(prCodigo: Integer):Integer; Virtual; asbstract;
procedure Update(prObjeto: TPadrao); Virtual; asbstract;
procedure Delete(prCodigo: Integer); Virtual; asbstract;Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)