eine Collection-Property mit Editor erstellen, ohne das diese im Objektinspektor sichtbar ist...
public
property SeriesList: TCollection read FSeriesList write SetSeriesList;
end;
private
procedure ReadSeries(Reader: TReader);
procedure WriteSeries(Writer: TWriter);
protected
procedure DefineProperties(Filer: TFiler); override;
...
procedure TdspExtChart.ReadSeries(Reader: TReader);
begin
SeriesList.Clear;
Reader.ReadValue;
Reader.ReadCollection(SeriesList);
end;
procedure TdspExtChart.WriteSeries(Writer: TWriter);
begin
Writer.WriteCollection(FSeriesList);
end;
procedure TdspExtChart.DefineProperties(Filer: TFiler);
begin
inherited;
Filer.DefineProperty('SeriesList', ReadSeries, WriteSeries, True);
end;
// Package designide70 für ColnEdit einfügen !!!
type
TDspChartEditor = class(TComponentEditor)
public
procedure ExecuteVerb(Index: Integer); override;
function GetVerb(Index: Integer): string; override;
function GetVerbCount: Integer; override;
end;
procedure Register;
begin
RegisterComponents('Dsp', [TdspExtChart]);
RegisterComponentEditor(TdspExtChart,TDspChartEditor);
end;
{ TDspChartEditor }
procedure TDspChartEditor.ExecuteVerb(Index: Integer);
begin
if Index=0 then
ShowCollectionEditor(Designer, Component,
(Component as TdspExtChart).SeriesList, 'SerienList')
else
inherited ExecuteVerb(Index-1);
end;
function TDspChartEditor.GetVerb(Index: Integer): string;
begin
if Index=0 then
Result:='Serien bearbeiten'
else
Result:=inherited GetVerb(Index-1);
end;
function TDspChartEditor.GetVerbCount: Integer;
begin
Result:= inherited GetVerbCount+1;
end;
procedure TdspExtChart.DefineProperties(Filer: TFiler);Tags: Delphi
var
StoreIt: boolean;
Chart2: TdspExtChart;
begin
inherited;
Chart2 := Filer.Ancestor as TdspExtChart;
if Chart2 = nil then // keine Vererbung
StoreIt := true // immer Speichern
else // Coll. vergleichen
StoreIt := not CollectionsEqual(
FSeriesList, Chart2.FSeriesList, self, Chart2);
Filer.DefineProperty('SeriesList', ReadSeries, WriteSeries, StoreIt);
end;