Ich schreibe mir gerade für den Eigenbedarf eine TrackBar-ähnliche Komponente, bloß mit mehreren Schiebebalken. (Das mag vielleicht schwachsinnig klingen, aber ich brauche momentan sowas
)
Um diese Balken (variable Anzahl) im Objektinspektor bearbeiten zu können habe ich mir eine Klasse von TObjectlist abgeleitet.
Delphi-Quellcode:
TSlider = class
position: integer; // Noch etwas leer, aber wahrscheinlich kommen noch sachen dazu ;)
end;
TSliderList = class(TObjectList)
private
function getitem(idx: integer): tSlider;
procedure setItem(idx: integer; data: tSlider);
public
procedure Add(data: TSlider);
procedure Delete(idx: integer);
property Items[idx: integer]: tslider read getitem write setitem; default;
end;
{...}
procedure TSliderList.Add(data: TSlider);
begin
inherited add(data);
end;
procedure TSliderList.Delete(idx: integer);
begin
inherited delete(idx);
end;
procedure TSliderList.setItem(idx: integer; data: tSlider);
begin
inherited setitem(idx,data);
end;
function tSliderList.getitem(idx: integer): tSlider;
begin
result := inherited getitem(idx) as tslider;
end;
Soviel zu der Liste.
das problem liegt jetzt aber irgendwo hier:
Delphi-Quellcode:
TMultiTrackBar = class(TCustomControl)
private
{...}
fsliders: TSliderList;
function slidercount: integer;
function getsliders: TSliderlist;
procedure setsliders(data: TSliderList);
{...}
public
{...}
published
{ Published-Deklarationen }
property Sliders: TSliderList read getsliders write setsliders;
end;
{...}
function TMultiTrackbar.getSliders: TSliderList;
begin
result := fsliders;
end;
procedure TMultiTrackbar.setSliders(data: TSliderList);
begin
fsliders := data;
paint;
end;
Wenn ich die Komponente installiere klappt zunächst alles hervorragend, die Eigenschaft sliders wird auch angezeigt. Sobald ich diese im Objektinspektor aber markiere kommt folgende Meldung:
Zitat:
Zugriffsverletzung bei Adresse 4002701E im Modul rtl90.bpl.Lesen von Adresse 00000001 kann nicht erweitert werden.
WORAN LIEGT DAS?!?!
Hilfe
PS: Erzeugt wird die Liste auch
fsliders := TSliderlist.Create;
PPS: Bitte nicht sauer sein, wenn ich erst Morgen antworte, ich geh jetzt ins Bett.