Einzelnen Beitrag anzeigen

snook

Registriert seit: 25. Jun 2010
94 Beiträge
 
Delphi 2005 Professional
 
#1

propertyeditor wird nicht auf klasse angewendet

  Alt 4. Feb 2011, 14:29
heee,

kann mir einer sagen, warum der proerty editor einfach nicht funktionieren will? ich kann das package mit dem editor, als auch das package mit der komponente kompilieren, aber egal was ich mit dem editor und auch der funktion GetAttributes anstelle, ich kriege nur die standard funktionen im OI, so als ob der editor einfach nicht rgistriert wird

die komponenete:
Delphi-Quellcode:
type
  TDataComClient = class(TComponent)
  private
    { Private-Deklarationen }
    FDataChannels: TDataCHannelList;
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
  published
    { Published-Deklarationen }
    constructor Create(AOwner: TComponent); override;
    property DataChannels: TDataChannelList read FDataChannels write FDataChannels;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Klaus', [TDataComClient]);
end;

{ TDataComClient }

constructor TDataComClient.Create(AOwner: TComponent);
begin
  inherited;
  FDataChannels := TDataChannelList.Create(self);
end;
der editor:

Delphi-Quellcode:
type
  TDataChannelsProperty = class(TPropertyEditor)
  private
    FDataChannelDialog: TDataChannelDialog;
    procedure ChannelListToList(DataChannels: TDataChannelList; var AList: TList); overload;
    procedure ListToChannelList(DataChannels: TList; var AList: TDataChannelList); overload;
  public
    function GetAttributes: TPropertyAttributes; override;
    procedure Edit; override;
  end;

procedure TDataChannelsProperty.Edit;
var DataChannelList: TDataChannelList;
    Dlg : TDataChannelDialog;
    LList : TList;
begin
  inherited;
  try
    DataChannelList := TDataChannelList(GetOrdValue);
    ChannelListToList(DataChannelList,LList);
    Dlg := TDataChannelDialog.Create(LList, DataChannelList.Owner.Owner,nil);
    if Dlg.Execute then LList.Assign(Dlg.DataChannels);
    ListToChannelList(LList,DataChannelList);
    SetOrdValue(LongInt(DataChannelList));
  finally
    Dlg.Free;
    LList.Free;
  end;
end;

function TDataChannelsProperty.GetAttributes: TPropertyAttributes;
begin
  Result := inherited GetAttributes + [paDialog];
end;
//edit
achso, die klasse um die es geht, TDataChannelList ist von TPersistent abgeleitet und verwaltet eine Stringlist
  Mit Zitat antworten Zitat