AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Klasse mit Properties als Property

Ein Thema von Ninow · begonnen am 25. Mär 2011 · letzter Beitrag vom 29. Mär 2011
Antwort Antwort
Ninow

Registriert seit: 25. Mär 2011
Ort: Nürnberg
8 Beiträge
 
Delphi 2010 Professional
 
#1

AW: Klasse mit Properties als Property

  Alt 25. Mär 2011, 20:21
Kurze Zwischenfrage TPropertyEditor befindet sich ja in DesignEditors.

Der Compiler meldet aber das er DesignEditors.dcu nicht finden kann warum?

Geändert von Ninow (25. Mär 2011 um 20:35 Uhr)
  Mit Zitat antworten Zitat
Ninow

Registriert seit: 25. Mär 2011
Ort: Nürnberg
8 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Klasse mit Properties als Property

  Alt 25. Mär 2011, 20:50
Okay Zwischenfrage erledigt...
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Klasse mit Properties als Property

  Alt 25. Mär 2011, 21:07
Definiere die einzelnen Properties als published

Delphi-Quellcode:
{..}
published
  property BeginColor;
  property EndColor;
{..}
Weiters musst du für die Instanzierung in TMyPanel selbst sorgen. Dh. im Konstruktor & Destruktor die Instanz per TKlassenname.Create erstellen und anschließend im Destruktor per Free zerstören!

Edit: Sorry, hab mich verguggt. Du müsstest die Propertys normalerweise als Public definieren und anschließend in Kurzform auch als published, soweit ich mich nicht irre... Hatte aber nicht viel am Hut mit Komponentenentwicklung & IDE
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG

Geändert von Aphton (25. Mär 2011 um 21:13 Uhr)
  Mit Zitat antworten Zitat
Ninow

Registriert seit: 25. Mär 2011
Ort: Nürnberg
8 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Klasse mit Properties als Property

  Alt 25. Mär 2011, 21:24
@Aphton: Die Properties müssen unter published stehen, da sie ja zur Entwicklungszeit verändert werden sollen.

Geändert von Ninow (25. Mär 2011 um 21:26 Uhr)
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#5

AW: Klasse mit Properties als Property

  Alt 25. Mär 2011, 21:38
guggt doch mal, wie es bei datasources gemacht wird. Ich glaube nicht, dass die einen Property-Editor benutzen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.542 Beiträge
 
Delphi 12 Athens
 
#6

AW: Klasse mit Properties als Property

  Alt 25. Mär 2011, 21:40
@Aphton: Die Properties müssen unter published stehen, da sie ja zur Entwicklungszeit verändert werden sollen.
TPersistent und Nachkommen > Standardsichtbarkeit = Published
TObjekt und Nachkommen (außer TPersistent) > Standardsichtbarkeit = Public

durch das {$M+}
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Mär 2011 um 21:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Klasse mit Properties als Property

  Alt 25. Mär 2011, 22:32
Ausserdem muss auch die Methode TBackGround.Assign implementiert werden.
Der Objektinspektor muss unter Umständen eine Kopie des TBackGround Objekts erzeugen und benötigt daher die Assign-Methode.
Bei älteren Delphiversionen kam dann bei fehlender Implementation die Exception "Klasse Txyz kann Txyz nicht zugewiesen werden".
Möglich, dass die Exception in neueren IDEs abgefangen wird.
Delphi-Quellcode:
procedure TBackGround.Assign(Source:TPersistent); {override}
begin
  if Source is TBackGround then
  begin
    FBackgroundAlignment := TBackGround(Source).FBackgroundAlignment;
    ...
  end
  else
    inherited; // wichtig! darf nicht fehlen
end;
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.753 Beiträge
 
Delphi 12 Athens
 
#8

AW: Klasse mit Properties als Property

  Alt 26. Mär 2011, 00:08
Es könnte auch helfen, den Background von TComponent abzuleiten und als Subkomponente des Panels anzulegen (FBackground.SetSubComponent(true); ). Dann werden die Einstellungen nämlich automatisch auch in der DFM gespeichert. Der Objektinspektor wird dann den Background mit einem "+" darstellen, womit man an dessen Properties kommt. Da du die Deklaration von TBackgroundAlignment nicht mitlieferst, kann man dazu noch nichts sagen. Wenn es ein Aufzählungstyp ist, musst du den lediglich registrieren damit der ObjektInspektor damit klar kommt. Der Property-Editor für TBackground erübrigt sich damit.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#9

AW: Klasse mit Properties als Property

  Alt 29. Mär 2011, 19:14
TPersistent und Nachkommen > Standardsichtbarkeit = Published
TObjekt und Nachkommen (außer TPersistent) > Standardsichtbarkeit = Public
[/DELPHI]
Das kannte ich noch nicht, oder ist es ein Missverständnis? Macht der Compiler einen klassenabhängigen Unterschied bei der Sichtbarkeit?

Bisher war ich immer davon ausgegangen dass bei

Delphi-Quellcode:
TMeineKlasse = class(TIrgendwas)
  Geheim: string;
end;
die Sichtbarkeit von "Geheim" immer published ist, unabhängig von der Vorfahrklasse.

Der Unterschied zeigt sich wenn man $M+ hinzufügt. Wenn TObject -> public gälte, würde $M+ der Klasse keine RTTI Informationen hinzufügen, bei TEgal -> published gälte, dann doch.

Mike
Michael Justin
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 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