Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Picture-Property von TImage ausblenden (https://www.delphipraxis.net/26919-picture-property-von-timage-ausblenden.html)

sCrAPt 31. Jul 2004 19:50


Picture-Property von TImage ausblenden
 
HiHo

Ich möchte die Picture-Property vom Vorfahrentyp TImage ausblenden. Ich hab dazu den Thread Hier im Forum suchenProperties von Vorfahren ausblenden durchgelesen, aber es funktioniert mit TImage komischer Weise nicht :(

Ich hab jetzt einfach
Delphi-Quellcode:
type
  TVerHorLabel = class(TImage)
  private
    property Picture: TPicture; override;
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
  published
    { Published-Deklarationen }
  end;
gemacht, wodruch ich folgenden Error kriege:
Zitat:

[Fehler] VerHorLabel.pas(11): Anweisung INDEX, READ oder WRITE erwartet, aber ';' gefunden
Ich hab deshalb einfach mal STRG+C gemacht wodurch ein wirklich mehr als komischer Code bei mir entsteht:
Delphi-Quellcode:
type
  TVerHorLabel = class(TImage)
  published
  private
    property Picture: TPicture read FPicture write SetPicture; override;
  private
    FPicture: TPicture;
    procedure SetPicture(const Value: TPicture);
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
  published
    { Published-Deklarationen }
  end;
Was natürlich nicht geht also hab ichs so geordnet:
Delphi-Quellcode:
type
  TVerHorLabel = class(TImage)
  private
    property Picture: TPicture read FPicture write SetPicture; override;
    FPicture: TPicture;
    procedure SetPicture(const Value: TPicture);
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
  published
    { Published-Deklarationen }
  end;
Aber dann krieg ich wieder einen Error:
Zitat:

[Fehler] VerHorLabel.pas(11): Feld- oder Methodenbezeichner erwartet
Wo liegt denn mein Fehler? Was soll ich machen?

mirage228 31. Jul 2004 19:52

Re: Picture-Property von TImage ausblenden
 
Zitat:

Zitat von sCrAPt
HiHo

Ich möchte die Picture-Property vom Vorfahrentyp TImage ausblenden. Ich hab dazu den Thread Hier im Forum suchenProperties von Vorfahren ausblenden durchgelesen, aber es funktioniert mit TImage komischer Weise nicht :(

Ich hab jetzt einfach
Delphi-Quellcode:
type
  TVerHorLabel = class(TImage)
  private
    property Picture; // <-- das override muss weg! Edit: Das ": TPicture" auch!
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
  published
    { Published-Deklarationen }
  end;

Hi,

das override ist überflüssig.

mfG
mirage228

sCrAPt 31. Jul 2004 19:54

Re: Picture-Property von TImage ausblenden
 
dann kommt aber
Zitat:

[Fehler] VerHorLabel.pas(12): Anweisung INDEX, READ oder WRITE erwartet, aber ';' gefunden
:cry:

mirage228 31. Jul 2004 19:56

Re: Picture-Property von TImage ausblenden
 
Zitat:

Zitat von sCrAPt
dann kommt aber
Zitat:

[Fehler] VerHorLabel.pas(12): Anweisung INDEX, READ oder WRITE erwartet, aber ';' gefunden
:cry:

Ach, sorry.

Es muss lediglich heissen:
Delphi-Quellcode:
property Picture;
mfG
mirage228

sCrAPt 31. Jul 2004 19:58

Re: Picture-Property von TImage ausblenden
 
Wird ohne Error compiliert, aber Picture ist immernoch im OI zu sehen

mirage228 31. Jul 2004 20:00

Re: Picture-Property von TImage ausblenden
 
Zitat:

Zitat von sCrAPt
Wird ohne Error compiliert, aber Picture ist immernoch im OI zu sehen

Dann versuch mal zu schreiben:
Delphi-Quellcode:
property Picture stored False;
mfG
mirage228

sCrAPt 31. Jul 2004 20:03

Re: Picture-Property von TImage ausblenden
 
funktioniert auch nicht :(

mirage228 31. Jul 2004 20:08

Re: Picture-Property von TImage ausblenden
 
Hi,

dann trifft glaube ich das zu, was choose im anderen Thread gesagt hat -> es geht nicht.

Zitat:

Zitat von choose
Leider lassen sich Properties nach dem Konzept von Delphi nicht nachträglich verstecken, lediglich "verbergen", indem sie erneut eingeführt werden (also namentlich im OI weiterhin aufgeführt sind) und keine Funktion bekommen (dummy Getter und Setter)- von dieser Lösung rate ich jedoch ab.
In den meisten Fällen hast Du bei den Komponenten der VCL/CLX jedoch einen Typ der Form TCustomXXX der zwar (annähernd) die vollständige Funktionalität der entsprechenden Klasse TXXX besitzt, jedoch nicht alle Eigenschaften veröffentlicht. Erbe einfach von ihm und veröffentliche nur diejenigen Eigenschaften, die später verwendet werden sollen.

leider gibt es keine Klasse TCustomImage. Du könntest natürlich den Source von TImage kopieren und deine eigene Komponente von TGraphicControl ableiten und dann picture nicht in den published Bereich schieben.

mfG
mirage228

mirage228 31. Jul 2004 20:09

Re: Picture-Property von TImage ausblenden
 
Sorry, Doppelpost: Bitte löschen...

sCrAPt 31. Jul 2004 20:14

Re: Picture-Property von TImage ausblenden
 
Dann werde ich meine Komponente einfach von TGraphicControl ableiten und erweitern. Danke für deine Mühe mirage


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