Witam.
Gdzieś mi umknął szczegół i klasy nie chcą współpracować ;).
Chyba, że się nie da no to trudno.
type
TRodzic = class
private
protected
fCount: Integer;
procedure Patla();
procedure RobCos(const aIndex: Integer);
public
constructor Create(const ACount: Integer);
destructor Destroy();override;
end;
implementation
constructor TRodzic.Create(const ACount: Integer);
begin
inferited;
end;
destructor TRodzic.Destroy();
begin
inherited;
end;
procedure TRodzic.Patla();
var j: Integer;
begin
// Petla oczywiście działa
for j:= 0 to fCount-1
do
RobCos(j);
end;
procedure TRodzic.RobCos(const aIndex: Integer);
begin //
ShowMessage('Rodzic: wyświetl nr '+IntToStr(aIndex));
end;
type
TPotomek = class(TRodzic)
private
protected
public
constructor Create(const ACount: Integer);
destructor Destroy();override;
end;
implementation
constructor TPotomek.Create(const ACount: Integer);
begin
inferited;
end;
destructor TPotomek.Destroy();
begin
inherited;
end;
procedure TPotomek.RobCos(const aIndex: Integer);
begin
Inherited;
// co tu zrobić żeby komunikat się wyświetlił najpierw z rodzica a potem z potomka - razem z aIntex;
ShowMessage('Potomek: wyświetl nr '+IntToStr(aIndex);
end;
Celowo w kodzie nie dodaje żadnych virtual, **override **bo ich nie jestem pewny.
W potomku nie daje też Patla() bo może się uda bez.
W skrócie chodzi o to że TPotomek ma wywołać procedurę TRodzic.Petla() która jest stała a ta z kolei ma w pętli wywoływać TPotomek.RobCos() która w zależności od przypadku będzie miała zmienny kod, ale w tym kodzie będzie używany **AIndex ** z rodzica.
Ogólnie założenie jest takie ze to co się powtarza i może być wspólne dla rożnych potomków miało wylądować u TRodzic.
Jeśli ktoś ma pomysł na to to będę wdzięczny za podpowiedź. Szukałem ale nie trafiłem na taki przypadek wiec jeśli się powtarzam to z góry przepraszam.
Edit:
Poprawiłem procedure RobCos();