Próbuję użyć tablicy niestandardowej klasy jako właściwości dla mojego komponentu, ale problem polega na tym, że wartości nie zostały zapisane w komponencie, co oznacza, że jeśli ustawię wartości, zapisać wszystko i otwórz ponownie projektu, wartości składnik znika ... Mój kod wygląda następująco:Tablica niestandardowej klasy jako własności
unit Unit1;
interface
uses Windows, ExtCtrls,Classes,Controls;
type
TMyClass=class(TPersistent)
private
FName: string;
FValue: double;
public
property Name: string read FName write FName;
property Value: double read FValue write FValue;
end;
TMyComponent= class(TCustomPanel)
private
FMyArray: array[0..200] of TMyClass;
function GetmyArray(Index: Integer): TMyClass;
procedure SetMyArray(index: Integer; Value: TMyClass);
public
property myArray[index: Integer]: TMyClass read GetMyArray write SetMyArray;
end;
implementation
function TMyComponent.GetmyArray(Index: Integer): TMyClass;
begin
result:= FmyArray[Index];
end;
procedure TMyComponent.SetMyArray(index: Integer; Value: TMyClass);
begin
FMyArray[index].FName:= Value.FName;
FMyArray[index].FValue:= Value.FValue;
end;
end.
wiem, że tylko opublikowane właściwości mogą być przesyłane strumieniowo, ale problemem jest to, że moja własność jest tablicą i nie można jej opublikować ... Sugestię, że miałem używać DefineProperties()
, aby zapewnić niestandardowe przesyłanie strumieniowe, ale nie widzę, jak to zrobić z tablicą. Inną możliwością, o której myślałem, było zmodyfikowanie TMyClass na rodzaj klasy, w której TMyComponent może być jej rodzicem, tak jak robi to TChart, do którego można dodać różne klasy serii. Ale ja nie wiem, co klasa to powinno być
TMyClass=class(T???????????)
Dzięki, że mogę wyjąć MyArray nieruchomości i stworzyć TMyClass i dodać do TMyComponent jak:
MyArray1.parent:= MyComponent1;
MyArray2.parent:= MyComponent2;
...
. Która z nich jest lepszą opcją? Czy jest jakiś inny lepszy pomysł?
Przetestowałem tę wersję i działa dobrze, po prostu muszę przetestować w moim prawdziwym kodzie, który jest nieco bardziej złożony, dzięki bardzo dużo – Felipe
Szukałem tego samego. Świetna odpowiedź od Remy'ego, dziękuję bardzo. –