AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Objectlist im Objektinspektor?!

Ein Thema von Namenloser · begonnen am 17. Jul 2006 · letzter Beitrag vom 18. Jul 2006
 
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#1

Objectlist im Objektinspektor?!

  Alt 17. Jul 2006, 23:18
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.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz