Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Bei Klassenvererbung eine Public property sperren (https://www.delphipraxis.net/55439-bei-klassenvererbung-eine-public-property-sperren.html)

backdraft 20. Okt 2005 22:35


Bei Klassenvererbung eine Public property sperren
 
Hallo,

ich habe folgendes Problem.

Ich habe mir eine Klasse von TCustomComboBox abgeleitet.

Die TCustomComboBox hat im public-Teil die property Items.

In meiner eigenen Komponente möchte ich zwar intern (innerhalb meiner Komponete) auf diese Eigenschaft zugreifen, aber der IDE diesen Zugriff verweigern.

Ich hab schon folgendes probiert, aber es funktioniert nicht

type
TMyComboBox = class(TCustomComboBox)
protected
property Items;
end;

Ich komme danach immer noch mit MyComboBox1.Items.Clear an die Eigenschaft ran.

Kann man vielleicht soetwas nicht rückgängig machen?

Danke Oliver

xaromz 20. Okt 2005 23:41

Re: Bei Klassenvererbung eine Public property sperren
 
Hallo,

die Regel lautet: einmal public, immer public. Man kann in Delphi die Sichtbarkeit nur erhöhen, niemals einschränken.

Gruß
xaromz

Kroko1999 21. Okt 2005 07:18

Re: Bei Klassenvererbung eine Public property sperren
 
Delphi-Quellcode:
// alles deine neue Klasse
  private
   function GetItems: TStrings;
  public
    property Items: TStrings read GetItems;
//.. der Rest
  end;

function TKlasse.GetItems;
begin
  Result := nil;
end;
und Items.Clear läuft total ins Leere! :wink:

Bernhard Geyer 21. Okt 2005 07:25

Re: Bei Klassenvererbung eine Public property sperren
 
Zitat:

Zitat von Kroko1999
und Items.Clear läuft total ins Leere! :wink:

Du meinst wohl eher es kracht!

Zitat:

Zitat von backdraft
Die TCustomComboBox hat im public-Teil die property Items.

In meiner eigenen Komponente möchte ich zwar intern (innerhalb meiner Komponete) auf diese Eigenschaft zugreifen, aber der IDE diesen Zugriff verweigern.

Du hast folgende Möglichkeiten:

1, Probier mal mittels Reintroduce das Property neu zu definieren. Damit kannst du es nur teilweise verstecken, da durch ein Case auf TCustomComboBox das Propertie doch wieder erreichbar ist.

2, Du leitest deine Klasse von TWinControl ab und hast als Member-Variable eine ComboBox welche mit alClient in deinem WinControl liegt. Dann kannst Du die Schnittstelle/Public Properties so definieren wie du Lustig bist.

Kroko1999 21. Okt 2005 07:28

Re: Bei Klassenvererbung eine Public property sperren
 
Zitat:

Zitat von Bernhard Geyer
...
Du meinst wohl eher es kracht!

...

JA :mrgreen:


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