Einzelnen Beitrag anzeigen

Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#1

Objektinspektor Programmieren

  Alt 24. Nov 2005, 18:58
Hallöchen....

ich hab da ein kleines Problemchen...

Ich hab eine Art "Objektinspektor" mit dem ich Eigenschaften von meinenen Objekten umändern kann.
Jedes Objekt mit Eigenschaften stammt von "TEackBase" ab:
Delphi-Quellcode:
type
  TEackBase = class (TImageSpriteEx)
  public
    settings : TPropList;
    events : TStringlist;
    focus:boolean;
    name:string;
    constructor Create(AOwner:TSprite);
end;
"settings" ist vom Typ TPropList:
Delphi-Quellcode:
type
  TEtyp = (etInteger,etBoolean,etString);

type
  PInt=^integer;
  PStr=^string;
  Pbol=^boolean;

type
  TEackItem = class
    name:string;
    typ:TETyp;
    int:pint;
    str:pstr;
    bol:pbol;
end;

type
  TPropList = class(TList)
  protected
    function GetItem(Index: Integer): TEackItem;
    procedure SetItem(Index: Integer; AItem: TEackItem);
  public
    function Add(name:string;typ:TETyp;intptr:pint=nil;strptr:pstr=nil;boolptr:pbol=nil):Integer;overload;
    function Remove(Index:integer): Integer; overload;
    property Items[Index: Integer]: TEackItem read GetItem write SetItem; default;
end;
Hier der Code der Liste:
Delphi-Quellcode:
procedure TPropList.SetItem(Index:integer; AItem:TEackItem);
begin
  inherited Items[Index] := AItem;
end;

function TPropList.GetItem(Index:Integer):TEackItem;
begin
  Result := inherited Items[Index];
end;

function TPropList.Add(name:string;typ:TETyp;intptr:pint=nil;strptr:pstr=nil;boolptr:pbol=nil):Integer;
var item:TEackItem;
begin
  item := TEackItem.Create;
  item.name := name;
  item.typ := typ;
  item.int := intptr;
  item.str := strptr;
  item.bol := boolptr;
  Result := inherited Add(Item);
end;

function TPropList.Remove(Index:Integer):integer;
begin
  Result := inherited Remove(Items[index]);
end;
Um "Eigenschaften" in meine Liste zu schreiben, habb ich ja nun Add. Diese funktion will ich z.B. so aufrufen:

Settings.Add('name',etstring,nil,@myobjectid,nil) Leider bekomme ich beim Abfragen meiner Settings eine AV.

Was mache ich falsch? Gibt es vielleicht einen anderen Weg?

Grüße Igel457
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat