Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Erhalte Zugriffsfehler bei Verwendung von Attributen des paremt (https://www.delphipraxis.net/165001-erhalte-zugriffsfehler-bei-verwendung-von-attributen-des-paremt.html)

roboter202 9. Dez 2011 14:14

Erhalte Zugriffsfehler bei Verwendung von Attributen des paremt
 
Hi,

Ich habe ein kleines Problem mit meinen Klassen:

Hier die Definitionen:
Delphi-Quellcode:
TGuiElement = class
  private
    ftop, fleft, fwidth, fheight: Double;
    fid: Integer;
    fname: String;
    fclassName: String;

[...]

  TGuiButton = class(TGuiElement)
  private
    fOnClick: TNotifyEvent;
  public
    procedure Render;
  end;
der Fehler liegt in der procedure Render der TGuiButton Klasse

Delphi-Quellcode:
 glTranslated( fleft, ftop,0);
warum hab ich keinen Zugriff auf die Attribute der Vaterklasse?

DeddyH 9. Dez 2011 14:22

AW: Erhalte Zugriffsfehler bei Verwendung von Attributen des paremt
 
Du hast sie doch selbst als private deklariert. Du kannst nun entweder Properties mit einer höheren Sichtbarkeit erstellen, über die Du auf die Felder zugreifst, oder Du verschiebst sie direkt nach protected.

roboter202 9. Dez 2011 14:29

AW: Erhalte Zugriffsfehler bei Verwendung von Attributen des paremt
 
ok aber ich auch, das fehlt leider bei meinem letzen post, auch public propertys erstellt und auch auf die kann ich nicht zugreifen.

Selbst wenn ich sie protected mache geht es immer noch nicht!

DeddyH 9. Dez 2011 14:31

AW: Erhalte Zugriffsfehler bei Verwendung von Attributen des paremt
 
Etwas mehr Code bitte.

roboter202 9. Dez 2011 14:33

AW: Erhalte Zugriffsfehler bei Verwendung von Attributen des paremt
 
Kein Problem

Delphi-Quellcode:
TGuiElement = class
  protected
    ftop, fleft, fwidth, fheight: Double;
    fid: Integer;
    fname: String;
    fclassName: String;
  public
    procedure Render; virtual; abstract;
    property top: Double read ftop write ftop;
    property left: Double read fleft write fleft;
    property width: Double read fwidth write fwidth;
    property height: Double read fheight write fheight;
    property id: Integer read fid write fid;
    property name: String read fname write fname;
    property ClassName: String read fclassName write fclassName;
  end;

  TGuiButton = class(TGuiElement)
  private
    fOnClick: TNotifyEvent;
  public
    procedure Render;
    property OnClick: TNotifyEvent read fOnClick write fOnClick;
  end;
Delphi-Quellcode:
procedure TGuiButton.Render;
begin
  glPushMatrix;
    glTranslated(fleft, ftop,0); //Felher taucht erstmals hier auf
    glBegin(GL_QUADS);
      glColor3f(1,0,1);
      glVertex3f(fwidth,0      ,0);
      glVertex3f(fwidth,0      ,0);
      glVertex3f(fwidth,fheight,0);
      glVertex3f(0     ,fheight,0);
    glEnd;

  glPopMatrix;
end;

DeddyH 9. Dez 2011 14:35

AW: Erhalte Zugriffsfehler bei Verwendung von Attributen des paremt
 
Nicht auf fleft/ftop zugreifen, sondern auf left und top (dasselbe gilt für width und height). Außerdem fehlt das override hinter Render in der abgeleiteten Klasse.

roboter202 9. Dez 2011 14:38

AW: Erhalte Zugriffsfehler bei Verwendung von Attributen des paremt
 
Oop. Ok aber der Fehler schient wohl auch noch wo anders zu liegen das self ergibt bei mir nil.

Ich prüfe es nochmal


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz