मैं अपने घटक के लिए एक संपत्ति के रूप में एक कस्टम वर्ग की एक सरणी का उपयोग करने की कोशिश कर रहा हूं, लेकिन समस्या यह है कि मान घटक में सहेजे नहीं गए हैं, जिसका अर्थ है कि अगर मैं सेट करता हूं मूल्यों, सब कुछ बचाने के लिए और फिर प्रोजेक्ट खोलने, मूल्यों के लिए घटक गायब हो जाता है ... मेरी कोड ऐसा दिखाई देता है:एक संपत्ति के रूप में एक कस्टम वर्ग का ऐरे
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.
मुझे पता है कि यह है कि केवल प्रकाशित गुण स्ट्रीम किया जा सकता है, लेकिन समस्या यह है कि है मेरी संपत्ति एक सरणी है और इसे प्रकाशित नहीं किया जा सकता है ... एक सुझाव है कि मुझे कस्टम स्ट्रीमिंग प्रदान करने के लिए DefineProperties()
का उपयोग करना था, लेकिन मुझे नहीं पता कि यह सरणी के साथ कैसे किया जाए। अन्य संभावना है कि मैंने सोचा था कि टीएम क्लास को एक प्रकार की कक्षा में संशोधित करना था कि टीएम कॉम्पोनेंट इसके माता-पिता हो सकता है, जैसे कि यह टीचर्ट में किया जाता है, जिसमें आप श्रृंखला के विभिन्न वर्ग जोड़ सकते हैं। लेकिन मैं नहीं जानता कि क्या वर्ग इस
TMyClass=class(T???????????)
कि मैं संपत्ति myArray बाहर ले जाना और TMyClass बना सकते हैं और निम्नलिखित के रूप में TMyComponent को जोड़ सकता है के साथ
होना चाहिए:
MyArray1.parent:= MyComponent1;
MyArray2.parent:= MyComponent2;
...
। कौन सा बेहतर विकल्प है? या कोई और बेहतर विचार है?
मैंने इस संस्करण का परीक्षण किया और यह ठीक काम करता है, मुझे बस अपने वास्तविक कोड में परीक्षण करना होगा जो थोड़ा अधिक जटिल है, बहुत बहुत धन्यवाद – Felipe
एक ही चीज़ की तलाश में था। रेमी से महान जवाब, बहुत बहुत धन्यवाद। –