Zitat von
Optiplex:
Oki deine Art der Komponentenverwaltung ist sehr ausgereift und Ok, ich mache das in der Regel genauso, aber ich habe festgestellt, dass man mit Änderungen in den eigenen Komps sehr sorgfälltig umgehen muss, so passiert es mit immer wieder, dass ich nachträglich etwas ändere und dann in einem alten Projekt beim Laden Fehlermeldungen auftreten weil ich einen Property geändert oder gelöscht habe.
Vielleicht hast du dafür auch eine Lösung perat.
Gruss Dieter
Jo, das ist ein Problem, mit dem ich auch immer wieder kämpfe. Ich denke aber, dass das für die übersichtliche Gestaltung (Anordnung) der Komponenten unerheblich ist. Ändere ich im Code einer Komponente etwas, dann ist es egal, ob das in einem kleinen oder großen
Package erfolgt.
Die einzige Lösung hier ist nur die Vererbung. Ich habe festgestellt, dass ich manchmal für eine spezielle Sache eigentlich eine vorhandene eigene Kompo gut einsetzen kann, diese aber an einer entscheidenden Stelle ändern muss. Dann kommt wirklich die Angst bezüglich alter (anderer Projekte). Um das zu umgehen lege ich dann in der Regel einen speziellen Nachfahren an. Das alte Projekt wird nicht durch die Änderungen berührt und das neu nutzt die neue Kompo. Klappt aber nicht immer so gut, vorallem wenn man einen grundlegenden Fehler oder Fehlentscheidung korrigieren muss.
Eigentlich lege ich immer mehrere Klassen für eine Komponente an. Als erstes eine BaseCompo, die die allgemeinen Grundfunktionen enthält. Dann eine spezialisierte Klasse und manchmal danach auch noch eine die nur die Propertys veröffentlicht (stirbt oft aus Faulheit
).
Die Frage war aber wohl nach der Organisation.
@BAMatze: Beispiel ist eher schwer. Aber mal grob ein Aufbau:
Package: MyPackage_D.bpl (Designzeit-
Package)
enthält die
Unit: RegisterMyComponents.pas in "Entkält"
in Benötigt: MyPackage_R.bpl
Package: MyPackage_R.bpl (Runtime-
Package)
enthält alle Units in denen der Quellcode der Komponenten steht. (MyCompo_A.pas, MyCompo_B.pas ....)
in Benötigt sind alle Packages aufgeführt, in denen _Units enthalten sind, die benutzt werden (nicht in Enthalten mit aufführen!!).
Da in MyPackage_D.bpl nur eine
Unit liegt (wenn nicht mehrere Sinn machen) ist das für die Registrierung in der
IDE sehr übersichtlich.
Die
Unit enthält dann in Uses alle Units des Packages MyPackage_R.bpl und die procedure Register.
Delphi-Quellcode:
procedure Register;
begin
RegisterComponents['OKI_VCL_Compos', [TMyCompoA, TMyCompoB]);
RegisterComponents['OKI_nonVCL_Compos', [TMyCompoC, TMyCompoD]);
end;
Ob das jetzt der Stein der Weisen ist, kann ich nicht sagen. Das ist mein aktueller Stand und eher aus Erfahrungen gewachsen (an der einen oder anderen Stelle sicher auch abgeschaut
).
Gruß oki