AGB  ·  Datenschutz  ·  Impressum  







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

propertyeditor wird nicht auf klasse angewendet

Ein Thema von snook · begonnen am 4. Feb 2011 · letzter Beitrag vom 7. Feb 2011
Antwort Antwort
Seite 1 von 2  1 2      
snook

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

propertyeditor wird nicht auf klasse angewendet

  Alt 4. Feb 2011, 13: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
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#2

AW: propertyeditor wird nicht auf klasse angewendet

  Alt 4. Feb 2011, 14:31
Du musst den Editor ebenfalls registrieren:
Delphi-Quellcode:
procedure Register;
begin
  RegisterPropertyEditor(...);
end;
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
snook

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

AW: propertyeditor wird nicht auf klasse angewendet

  Alt 4. Feb 2011, 14:36
ist er, sry hab ich vergessen einzufügen, hab ihn registriert über:

Delphi-Quellcode:
procedure register
begin
  RegisterPropertyEditor(TypeInfo(TDataChannelList),TDataComClient,'',TDataChannelsProperty);
end;
ich hab echt null plan warum der eidotr nicht beutzt wird. ich hatte die DataChannelList zuerst von TStringList abgeleitet, da erschien dann trotz registrierung des neuen editors der alte editor für TStrings im OI. daher dachte ich, sattel ich al auf TPersistent um und leite die Klasse davon ab, hat aber auch nichts gebracht.
  Mit Zitat antworten Zitat
snook

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

AW: propertyeditor wird nicht auf klasse angewendet

  Alt 4. Feb 2011, 15:21
so ich habe jetzt das ganze in einen komponenten editor umgeschrieben, so dass beim doppelclick auf die komponente das formular zum bearbeiten der DataChannels erzeugt werden sollte. das hat auch gar nicht funktioniert, sprich nach der registrierung des komponenteneditors tat sich beim doppelklick auf selbige überhaupt nichts.
mal ne dumm frage, muss ich die komponente und den editor im selben package installieren??? oder hat jemand auch schonmal probleme beim registrieren eines property editors gehabt?
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#5

AW: propertyeditor wird nicht auf klasse angewendet

  Alt 4. Feb 2011, 16:03
mal ne dumm frage, muss ich die komponente und den editor im selben package installieren???
Das weiß ich nicht, sry.
Aber denk dran, dass du das Package selbst kompilieren musst und es nicht reicht, wenn du deine Anwendung kompilierst in der du ggf. die betreffende Unit des Editors geöffnet hast.
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

AW: propertyeditor wird nicht auf klasse angewendet

  Alt 4. Feb 2011, 16:33
muss ich die komponente und den editor im selben package installieren???
Nein!
Die Komponente gehört in ein Runtime-Package.
Component-Editoren und Property-Editoren gehören in ein Designtime-Package.
Das Designtime-Package benützt das Runtime-Package.
Wenn man sauber programmieren möchte, dann gehören auch alle Register... Prozeduren in das Designtime-Package.
Andreas
  Mit Zitat antworten Zitat
snook

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

AW: propertyeditor wird nicht auf klasse angewendet

  Alt 4. Feb 2011, 18:36
okay, ich habe jetzt das package, welches die DataComClient Komponente enthält als laufzeit-package gesetzt und das Package mit dem Prop-Editor als Designzeit. Beide Registrierungen liegen im Designzeitpackage. jetzt meckert mir der compiler bein installieren:

Package C:\Dokumente und Einstellungen\local_admin\Eigene Dateien\Borland Studio-Projekte\Bpl\InstrumentDataCom.bpl kann nicht installiert werden, da es kein Entwurfszeit-Package ist.

erscheint mir soweit logishc, weil es ein anderes package in der requires enthält, das design UND laufzeitpackage ist, oder irre ich mich? wenn ich das package jedenfalls wieder als design und laufzeit installiere, dann ist wieder das alte problem da, dass der editor keinen mucks sagt
  Mit Zitat antworten Zitat
snook

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

AW: propertyeditor wird nicht auf klasse angewendet

  Alt 4. Feb 2011, 18:37
hmmm mich wundert gerade, dass ich es ja als leufzeitpackage installieren wollte, warum schimpft er dann über die designtime?
  Mit Zitat antworten Zitat
snook

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

AW: propertyeditor wird nicht auf klasse angewendet

  Alt 4. Feb 2011, 23:18
ohoh ich habe das ganze jetzt soweit eingegrenzt, dass wohl keine komponenten registriert werden, die nicht über den menüeintrag neu -> komponente erzeuigt werden. jedenfalls wird die komponente auch nicht registriert, wenn ich einfach nur die register procedur im designtime package aufrufe. kann es sein, dass man dem compiler irgendwie bescheid gebne soll, dass er dort jetzt auch tatsächlich etwas registrieren soll, und passiert dass verdeckt im hintergrund wenn ich eine komponente über das menü erstell?

ich bin hier langsam am verzweifeln...
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

AW: propertyeditor wird nicht auf klasse angewendet

  Alt 7. Feb 2011, 10:54
hmmm mich wundert gerade, dass ich es ja als leufzeitpackage installieren wollte, warum schimpft er dann über die designtime?
Nur Designtime-Packages können installiert werden.
Runtime-Packages "liegen einfach nur so im Suchpfad rum" und werden von den Designtime-Packages benützt.
Code:
Designtime-Package ---benützt---> Runtime-Package
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17: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