AGB  ·  Datenschutz  ·  Impressum  







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

Property Editor mit Array of Objects

Ein Thema von mcbain · begonnen am 11. Jun 2013 · letzter Beitrag vom 12. Jun 2013
Antwort Antwort
mcbain

Registriert seit: 18. Mai 2011
50 Beiträge
 
#1

Property Editor mit Array of Objects

  Alt 11. Jun 2013, 15:12
Hallo,
ich schreibe derzeit eine eigene Komponente, in der es eine Eigenschaft gibt, die einen Property Editor öffnet.
Das Öffnen eines eigenen Formulares nachdem '...' gedrückt wurde, funktioniert bisher auch wunderbar, nur funktioniert es noch nicht so ganz mit der Über-/Rückgabe des Wertes.

Meine Eigenschaft:
TMyObjects = array of TMyobject

Damit etwas passiert, muss man ja die Edit Methode überschreiben:

Code:
...
procedure TMyEditor.Edit;
var lform: TMyForm;
begin
  lform := TMyForm.Create(nil);
  try
    //Übergabe des gesamten Inhalts an die korrespondierende Eigenschaft des Formulars
    lform.Items := TMyObjects(GetOrdValue);

   //Formular fügt Items hinzu oder entfernt welche
    lform.ShowModal;

     //Anschließend sollen die Items wieder im Property stehen
    SetOrdValue(lform.Items);
  finally
    FreeAndNil(lform);
  end
end;
...
Nur leider funktioniert das ganze nicht so wie gedacht. Meine Liste ist beim nächsten öffnen des Formulars wieder leer.
Wäre nett, wenn mir jemand nen Tip geben könnte wie ich das in den Griff bekommen könnte, bzw. besser machen könnte.

Vielen Dank.
Gruß
mc
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Property Editor mit Array of Objects

  Alt 11. Jun 2013, 15:29
Array-Eigenschaften können nicht als published deklariert werden und vom Streaming-System daher nicht behandelt. Du muss also selber mittels DefineProperties für das Speichern und Laden sorgen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Property Editor mit Array of Objects

  Alt 11. Jun 2013, 22:33
@UweRaabe ist das nicht verwandt mit Array of a custom class as a property
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Property Editor mit Array of Objects

  Alt 12. Jun 2013, 08:39
@Bummi, psst! Wir wollen doch hier nicht unsere Quellen verraten

Aber es ist schon erstaunlich häufig, daß ähnliche Anfragen von verschiedenen Leuten in kurzem Abstand auf unterschiedlichen Plattformen gestellt werden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: Property Editor mit Array of Objects

  Alt 12. Jun 2013, 09:20
murphys law
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
mcbain

Registriert seit: 18. Mai 2011
50 Beiträge
 
#6

AW: Property Editor mit Array of Objects

  Alt 12. Jun 2013, 09:46
Vielen Dank für die Antworten.
Das heißt, wenn ich mir den Link http://stackoverflow.com/questions/1...-as-a-property anschaue, dass ich in meinem Property-Editor-Formular die Funktion WriteMyArray meiner Komponente aufrufen müsste, um Änderungen vorzunehmen?

Vielen Dank.
Gruß
mc

Geändert von mcbain (12. Jun 2013 um 09:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Property Editor mit Array of Objects

  Alt 12. Jun 2013, 10:11
Das heißt, wenn ich mir den Link http://stackoverflow.com/questions/1...-as-a-property anschaue, dass ich in meinem Property-Editor-Formular die Funktion WriteMyArray meiner Komponente aufrufen müsste, um Änderungen vorzunehmen?
Nicht ganz. An welcher Stelle würdest du denn den Aufruf platzieren?

Wie ich in meiner Antwort beschrieben habe, musst du die Methoden ReadMyArray und WriteMyArray (die Namen sind willkürlich gewählt) implementieren und diese in DefineProperties als Parameter den DefineProperty-Aufruf mitgeben.

Es würde auch helfen, wenn du verstehst, was bei DefineProperties passiert, insbesondere wann und von wem es aufgerufen wird. Das Delphi-Streaming-System ist nicht mal eben in ein paar Worten erklärt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Property Editor mit Array of Objects

  Alt 12. Jun 2013, 10:48
Eine Alternative wäre evtl. die Verwendung von TCollection statt einem Array.
Das Speichern im Formular wird damit zumindest leichter.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Property Editor mit Array of Objects

  Alt 12. Jun 2013, 12:27
Eine Alternative wäre evtl. die Verwendung von TCollection statt einem Array.
Das Speichern im Formular wird damit zumindest leichter.
Das Bearbeiten in der IDE übrigens auch. Das wird auch in der anderen Antwort auf StackOverflow empfohlen. Grundsätzlich ist das auch wohl der bessere Ansatz, wenn man denn die Möglichkeit hat, die Klassenhierarchie entsprechend aufzubauen. Ist das aber nicht gegeben oder hat man andere Owner-Beziehungen oder <irgendeinen anderen Grund einsetzen, der mir gerade nicht einfällt> oder will man das Streaming-System wirklich verstehen, dann sollte man sich mit DefineProperties auseinandersetzen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 18:11 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