घर
Top.Mail.Ru Yandeks.Metrika
मंच: "शुरुआती";
वर्तमान संग्रह: 2019.01.13;
डाउनलोड करें: [xml.tar.bz2];

नीचे

TCollection परिवर्तन घटना इसी तरह की शाखाएँ खोजें


Artem78   (2016-10-20 02:09) [0]

नमस्ते कृपया मुझे बताएं कि तत्वों को बदल दिए जाने पर (हटाए गए / जोड़े जाने पर) TCollection वर्ग के उदाहरण से सूचना कैसे प्राप्त करें?

मैं एक उदाहरण दूंगा कि मुझे क्या लागू करने की आवश्यकता है। एक कार्य वर्ग है जो TCollection से विरासत में मिला है। यह एक प्रकार का मॉडल है - भविष्य में इसके माध्यम से हम कार्य वस्तुओं में हेरफेर करने की योजना बनाते हैं। और एक गतिशील सूची दृश्य है जिसमें कार्यों की सूची प्रदर्शित की जाएगी। वास्तव में, मैं इसे बनाना चाहूंगा ताकि किसी संग्रह में बदलते समय, एक उपयोगकर्ता-परिभाषित फ़ंक्शन को कॉल किया जाए और बदले गए तत्वों की आईडी को इसे पास किया जाए। और इस फ़ंक्शन में, मैं आवश्यक पंक्तियों को अद्यतन करने के लिए एक सूची दृश्य अनुरोध भेजूंगा।

मुझे लगता है कि यह स्पष्ट है कि मेरा क्या मतलब है। मुझे बताएं कि डेल्फी एक्सएनयूएमएक्स में इसे कैसे लागू किया जाए।

खोज वर्ग की कस्टम रूपरेखा:
unit UTasks;

interface

uses SysUtils, Classes;

type
TTask = class(TCollectionItem)
 private
   //FID: integer;
   FTime: string;
   FTitle: string;
   FActive: boolean;
 public
   constructor Create(Collection: TCollection); override;
   //destructor Destroy; override;
 published
 //  property ID: integer read FID write FID;
   property Time: string read FTime write FTime;
   property Title: string read FTitle write FTitle;
   property Active: boolean read FActive write FActive;
 end;

 TTasksList = class(TCollection)
 private
   function GetTask(index:integer): TTask;
   procedure SetTask(index:integer; Value:TTask);
 public
   function Add:TTask;
   property Items[Index:integer]:TTask read GetTask write SetTask; default;
 end;

 TTasks = class(TComponent)
 private
   FTasksList: TTasksList;
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
   procedure Save(Path:String);
   procedure Load(Path:String);
 published
   property TasksList: TTasksList read FTasksList write FTasksList;
   // ...
 end;

implementation

{ TTask }

constructor TTask.Create(Collection: TCollection);
begin
 inherited create(Collection);
 // ID := ...
 Time := "";
 Title := "";
 Active := false;
end;

{ TTasksList }

function TTasksList.Add: TTask;
begin
 Result := TTask(inherited Add);
end;

function TTasksList.GetTask(index: integer): TTask;
begin
 //Result := TTask(Inherited Items[index]);
 Result := TTask(Inherited GetItem(index));
end;

procedure TTasksList.SetTask(index: integer; Value: TTask);
begin
 {Items[Index]}GetItem(index).Assign(Value);
end;

{ TTasks }

constructor TTasks.Create(AOwner: TComponent);
begin
 inherited create(AOwner);
 TasksList := TTasksList.Create(TTask);
 //FTasksList := TTasksList.Create(Self);
end;

destructor TTasks.Destroy;
begin
 TasksList.Free;
 inherited;
end;

procedure TTasks.Load(Path: String);
var
 ms: TMemoryStream;
 fs: TFileStream;
begin

 fs := TFileStream.Create(path, fmOpenRead);
 ms := TMemoryStream.Create;
 try
   ObjectTextToBinary(fs, ms);
   ms.position := 0;
   ms.ReadComponent(Self);
 finally
   ms.Free;
   fs.free;
 end;
end;

procedure TTasks.Save(Path: String);
var
 ms: TMemoryStream;
 fs: TFileStream;
begin
 fs := TFileStream.Create(path, fmCreate or fmOpenWrite);
 ms := TMemoryStream.Create;
 try
   ms.WriteComponent(Self);
   ms.position := 0;
   ObjectBinaryToText(ms, fs);
 finally
   ms.Free;
   fs.free;
 end;
end;

end.



Leonid Troyanovsky ©   (2016-10-20 10:45) [1]


> Artem78 (20.10.16 02: 09)

TTasksList.Changed; ओवरराइड?

--
सादर, LVT



Artem78   (2016-10-20 17:09) [2]

और अधिक विस्तार से आप कर सकते हैं?



Rouse_ ©   (2016-10-20 19:13) [3]

जो लिखा गया है उसे लागू करें और ब्रेकर को विधि हैंडलर में रखें, वहां आप समझेंगे



Artem78 ©   (2016-10-24 03:54) [4]

हाँ, धन्यवाद, यह काम करने लगता है।



पन्ने: 1 पूरी शाखा

मंच: "शुरुआती";
वर्तमान संग्रह: 2019.01.13;
डाउनलोड करें: [xml.tar.bz2];

ऊपर





मेमोरी: 0.56 एमबी
समय: 0.013 c
2-1477150686
Valya
2016-10-22 18:38
2019.01.13
गैर-मानक सरणी


2-1476367396
दिमित्री
2016-10-13 17:03
2019.01.13
विचित्रता प्रदर्शन


2-1476199440
QAZ
2016-10-11 18:24
2019.01.13
कोड में एक वस्तु के रूप में स्ट्रिंग


15-1476480602
यूरी
2016-10-15 00:30
2019.01.13
आपको जन्मदिन की शुभकामनाएं! अक्टूबर 15 2016 शनिवार


4-1252357661
Moff20
2009-09-08 01:07
2019.01.13
काम ऊ स्कैनर





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский