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/)
-   -   C++ XE2: TGIFImage lässt kein Draw() zu (https://www.delphipraxis.net/166517-xe2-tgifimage-laesst-kein-draw-zu.html)

messie 16. Feb 2012 10:35

XE2: TGIFImage lässt kein Draw() zu
 
Moin,

ich wollte ein gif anzeigen, der Zugriff aus die Methode Draw() wird mir aber verweigert.
In der Headerdatei steht es in der protected-clause, alle Methoden dort werden vom Compiler mit "Zugriff verweigert" abgelehnt.
Ist das etwas Grundsätzliches? Wenn ich meine Klasse erstelle
Code:
TGIFImage *image = new TGIFImage();
image->LoadFromStream(RS);
sollte doch auch der Zugriff image->Draw() möglich sein, oder? Das ist doch kein public-Zugriff :?
Bin etwas verwirrt, Messie

DeddyH 16. Feb 2012 10:44

AW: XE2: TGIFImage lässt kein Draw() zu
 
protected bedeutet doch nun einmal, dass nur von abgeleiteten Klassen darauf zugegriffen werden kann. Du kannst das aber mit einer Cracker-Klasse umgehen.

daywalker9 16. Feb 2012 10:50

AW: XE2: TGIFImage lässt kein Draw() zu
 
Warum direkt Draw?

Zum Zeichnen nimmt man doch normalerweise den Canvas.

messie 16. Feb 2012 11:13

AW: XE2: TGIFImage lässt kein Draw() zu
 
Zitat:

Zitat von DeddyH (Beitrag 1151383)
protected bedeutet doch nun einmal, dass nur von abgeleiteten Klassen darauf zugegriffen werden kann.

Aber
Code:
TGIFImage *image = new TGIFImage();
ist doch eine Instanz der Ausgangsklasse, oder? Da muss doch ein Zugriff möglich sein.

DeddyH 16. Feb 2012 12:01

AW: XE2: TGIFImage lässt kein Draw() zu
 
Nein, Du rufst ja "von außen" Methoden der GIFImage-Instanz auf.

messie 16. Feb 2012 20:00

AW: XE2: TGIFImage lässt kein Draw() zu
 
Zitat:

Zitat von DeddyH (Beitrag 1151406)
Nein, Du rufst ja "von außen" Methoden der GIFImage-Instanz auf.

Stimmt. Das Draw darf ja nur intern aufgerufen werden.
Falls das mal ein anderer Anfänger findet:
Code:
   TResourceStream *RS = new TResourceStream((int)HInstance,"GifImage_1",PChar(RT_RCDATA));
   TGIFImage *image = new TGIFImage();
   image->LoadFromStream(RS);
   image->AnimationSpeed = 500;
   Image1->Picture->Graphic = image;
Das Draw() wird dann von Image1 aufgerufen. Das war bei mir übrigens auch verschnupft und flackerte heftig. Ein neues Image konnte das dann besser - warum auch immer.

Danke, Messie

[offtopic]
Sag mal Deddy,
Dein Avatar altert nicht mehr. Muss der nicht langsam in den Kindergarten? Oder ist der schon nicht mehr so süß und zickt rum?
:mrgreen::mrgreen::mrgreen:
[/offtopic]


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