[Delphi] Dostęp do klasy wyżej

szukaj na forum nowy temat odpowiedz

Strona [ 1 ] z 1

Kermitek1979 ten post 08-02-2010 11:57


Użytkownik
Status: Offline
Dołączył: 29-12-2009

Witam,

być może problem jest banalny ale nei wiem jak sobie z nim poradzić.

Mam zadeklarowaną klasę

  TNodes = class (TPersistent)
    private
      FCountItems : Integer;
    public
      Node : array [0..1000] of TNode;
      function NodeAdd (ParentID : Integer): Integer;
    published
      property CountItems : Integer read FCountItems write FCountItems;
  end;


TTop =  class (TPanel)
  private
    FHeader : THeaderControl;
    FStringGrid : TStringGrid;
    procedure MyOnDrawCell (Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
  public
    Nodes : TNodes;
    Constructor Create (AOwner : TComponent); override;
    Destructor Destroy; override;
    function NextPaintedID (ID : Integer; Direction : Boolean) : Integer;
  published
    property Header : THeaderControl read FHeader write FHeader;
    property StringGrid : TStringGrid read FStringGrid write FStringGrid;
 end;


I teraz pojawia się mój problem.
W jaki sposób w metodzie NodeAdd klasy TNodes odwołać się do zmiennej klasy rodzica czyli do TTop;

Robie to tak, ale nie działa.

Poniższy przykład ma na celu zwiększenie ilości linii w stringgridzie podczas zwiększenia linii w klasie TNodes.
Na innym forum dotyczącym języka C przeczytałem, że w klasie TNodes trzeba zrobić wskaźnik do TTop, ale nie potrafię tego.

function TNodes.NodeAdd (ParentID : Integer): Integer;
begin

  Top.FStringGrid.RowCount := FCountItems;
end;
Przejdź na górę strony
cytuj
cimak ten post 08-02-2010 12:27
avatar

Użytkownik
Status: Offline
Dołączył: 01-12-2002
Skąd: Chatka na środku lasu
mozesz dodac pole "Parent:TTop" do TNode i przekazywac wartosc w konstuktorze... ze przy tworzeniu Noda mowisz kto jest rodzicem. a potem juz z gorki ;]
Przejdź na górę strony
cytuj
Azarien ten post 08-02-2010 15:21
avatar

Użytkownik
Status: Offline
Dołączył: 18-12-2003

FStringGrid jest private, więc nie możesz. Żebyś mógł, umieść to pole w sekcji public, albo udostępnij przez property.

Temat do działu Newbie.

Ostatnio zmodyfikowany: 08-02-2010 15:22 przez Azarien
Przejdź na górę strony
cytuj
Kermitek1979 ten post 08-02-2010 18:08


Użytkownik
Status: Offline
Dołączył: 29-12-2009

Dziękuję za pomoc.
Oczywiście działa :)
Przejdź na górę strony
cytuj
szukaj na forum nowy temat odpowiedz

Strona [ 1 ] z 1

1 użytkownik(ów) przegląda ten temat (1 gości)
(żadnych zarejestrowanych użytkowników)

Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0531 sek. (zapytań SQL: 9)