![]() |
Published propertys werden nicht angezeigt
Hi,
Delphi-Quellcode:
Die Propertys sollten doch im OI angezeigt werden. Das tut legendlich nur die property "Path", die anderen beiden sind "verschwunden". Wird ja wohl kaum dadran liegen, das es kein write gibt?
TEnvironment = class(TComponent)
private ... published { Published-Deklarationen } property AllUsersProfile: string read FAllUsersProfile; property AppData: string read FAppData; property Path: TStringList read FPath; end; Was könnte ich dagegen tun? |
Re: Published propertys werden nicht angezeigt
Zitat:
Ich denke schon. Denn OI ist da um die Eigenschaften zu ändern, und das ist mit ReadOnlyPropertys nicht möglich. |
Re: Published propertys werden nicht angezeigt
Zitat:
[edit] Aber warum wird dann Path angezeigt? Die kann man ja auch nicht ändern [/edit] |
Re: Published propertys werden nicht angezeigt
Ich bin mir absolut nicht sicher, deswegen eher als Frage:
Bezieht sich write/read bei Klassen nicht nur auf den Pointer, sodass man mit readonly den Wert der Zeiger bekommt, somit die ganze Instanz verwenden kann, nur dem Zeiger keine neue/andere Instanz zuweisen kann? |
Re: Published propertys werden nicht angezeigt
Wird die überhaupt im Constructor erzeugt? Wahrscheinlich erkennt der Objektinspektor, dass es sich nicht um einen trivialen Typ handelt. Du kannst die Objektreferenz selbst nicht überschreiben, wohl aber dessen Eigenschaften ändern. Sowas wie TEnvironment.Create.Path := TStringlist.Create dürfte nicht gehen.
|
Re: Published propertys werden nicht angezeigt
Einen Nachfahren von TPersistent wird er auch im OI zeigen wenn er readonly ist.
Schließlich weiß er ja, dass Assign unterstützt wird. ;) Ansonsten wird eine readonly Property generell nie vom Delphi Streaming System erfasst. Sie könnte ja beim Auslesen der Datei/Resource nicht wieder bestezt werden und wäre somit sinnloser Ballast ;) Was nicht in der DFM landet, braucht auch keinen Platz im OI verschwenden So einfach ist das. :mrgreen: |
Re: Published propertys werden nicht angezeigt
Hi,
ich hab das jetzt einfach so gemacht:
Delphi-Quellcode:
Ist vllt. keine sehr saubere Lösung, aber so gehts^^.
private
FAllUsersProfile: string; procedure SetAllUsersProfile(const Value: string); published property AllUsersProfile: string read FAllUsersProfile write SetAllUsersProfile; end; [...] procedure TEnvironment.SetAllUsersProfile(const Value: string); begin FAllUsersProfile := FAllUsersProfile; end; |
Re: Published propertys werden nicht angezeigt
Du hast wohl gar keine Skrupel, oder? :mrgreen:
Was bringt es dir denn wenn der Wert sowieso readonly ist? Außerdem hat dieser Wert nur etwas mit DEINEM System zu tun, das muss ja nicht unbedingt der einzige Rechner sein auf dem das Programm laufen soll. Außerdem hast du nun scheinbar im Code die Möglichkeit die Property zu besetzen -> irgendwie ist dass ... :freak: |
Re: Published propertys werden nicht angezeigt
Zitat:
Habs jetzt doch anders gelöst. Hab mir einfach ein Kommentar reingeschrieben.
Delphi-Quellcode:
Der Sinn der Sache: Ich lese die Umgebungsvarialben aus. Diese soll man halt nicht ändern können. Nur auslesen halt ;)
procedure TEnvironment.SetAllUsersProfile(const Value: string);
begin // Darf nicht geändert werden end; |
Re: Published propertys werden nicht angezeigt
Hi,
schonmal rechtsclick auf OI, Eigenschaften, Checkbox "Nur Lesen Eigenschaften anzeigen" versucht? Grüsse Woki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz