Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Kein Zugriff auf öffentliche Methoden eines Objekts (https://www.delphipraxis.net/59494-kein-zugriff-auf-oeffentliche-methoden-eines-objekts.html)

Pfoto 23. Dez 2005 09:12


Kein Zugriff auf öffentliche Methoden eines Objekts
 
Hallo zusammen,

ich versuche mir gerade, ein indiviudelles Hint zu basteln, in dem z.B. auch Bilder angezeigt werden können. Es funktioniert sogar, aber eine Sache verstehe ich nicht:

Wieso findet der Compiler nicht die von mir hinzugefügten Elemente, wenn ich von Außen darauf zugreifen will? Er zeigt stets nur die Basismethoden von THintWindow an.
Also z.B. der Zugriff auf "Image" wird verweigert, bzw. als "undefiniert" bezeichnet. Obwohl es doch "public" ist.

So hab ich das Ganze aufgebaut:
Delphi-Quellcode:
type
  TMyHintWindow = class(THintWindow)
  private
    FImage: TImage;
  protected
    procedure paint; override;
  public
    MaxWidth: integer;
    property Image : TImage read FImage write FImage;
    constructor Create;
    destructor destroy; override;
  end;

// In TForm dann:
  MyHint: TMyHintWindow


// Dies funktioniert nicht
Form1.MyHint.Image.... <- Image sei undefiniert


Gibt mir doch bitte mal en Tipp, vielleicht hab' ich ja auch grad en Brett vorm Kopf...

Dank und Gruß
Pfoto

Sharky 23. Dez 2005 09:37

Re: Kein Zugriff auf öffentliche Methoden eines Objekts
 
Hai Pfoto,

bei mir geht es. Allerdings habe ich den Constructor angepasst da der Constructor von THindWindow mit Create (aOwner : TComponent) deklariert ist.
Delphi-Quellcode:
type
  TMyHintWindow = class(THintWindow)
  private
    FImage: TImage;
  protected
    procedure Paint; override;
  public
    MaxWidth: integer;
    property Image : TImage read FImage write FImage;
    constructor Create (aOwner : TComponent);
    destructor Destroy; override;
  end;

{ TMyHintWindow }
constructor TMyHintWindow.Create (aOwner : TComponent);
begin
  inherited Create(aOwner);
end;

destructor TMyHintWindow.Destroy;
begin
  inherited;
end;

procedure TMyHintWindow.Paint;
begin
  inherited;
end;
Und im Programm dann:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  MyHint := TMyHintWindow.Create (self);
  MyHint.Image := Image1;
end;

Pfoto 23. Dez 2005 10:19

Re: Kein Zugriff auf öffentliche Methoden eines Objekts
 
Mein Code hat danach leider immer noch nicht funktioniert,
aber Du hast mir trotzdem geholfen, denn das Problem war ganz simpel (und doof): :pale:


Ich habe in meinem tatsächlichen Code (anders als ich oben beschrieben hatte), MyHint von der Basisklasse abgeleitet:
Delphi-Quellcode:
  MyHint: THintWindow;
Dann kann natürlich kein Image gefunden werden... :wall:
Das passiert mir garantiert nicht wieder...


Dank und Gruß
Pfoto


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 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