Zitat:
Wenn FDataLink nil ist, krachts auch bei der Zuweisung der DataSource. Egal ob "value" nil ist. Genauso wenn Self.Parent nil ist. Dann kannst du nicht auf Self.Parent.Parent zugreifen (tmp.Parent).
Ähmmm, wie ist das denn dann hier:
Delphi-Quellcode:
if (ADataSource<>nil) and (FDataSource<>ADataSource) then
begin
FDataSource := ADataSource;
Und der Parent wird hier zugewiesen? In meiner eigenen Version!
Delphi-Quellcode:
FInputMask := TDBInputMask.Create(self);
FInputMask.Top := 312;
FInputMask.Left := 8;
FInputMask.Width := 425;
FInputMask.Height := 145;
FInputMask.DataSource := DataSource;
FInputMask.Parent := self;
Die Inputmaske ist im Grunde ein Nachkomme von TScrollBox. Ist in dieser das Feld Parent = NIL. Wie aber kommt eine Scrollbox aus der Komponentenpalette auf das Delphi Formular? Weist Delphi nicht intern auch der Eigenschaft Parent das Formular zu, auf dem sie platziert wird? Wenn ich hier falsch liege, muss ich mal ganz
OT fragen, was macht denn dann Delphi mit der
dfm Datei? Geschieht die entscheidende Zuweisung da wesentlich anders. Kann man das mit eigenem Quelltext auch so machen, wenn man die Komponente zur Laufzeit erzeugt? Ich dachte immer, Delphi liest die
dfm-Datei und macht daraus das gleiche, was ich mache, wenn ich die Kompo zur Laufzeit erzeuge. Scheint aber Deiner knappen Auskunft nach nicht so zu sein. Biitte bitte hilf mir weiter. Ich weiß wirklich nicht, wo ich nach dem Fehler suchen soll.
Bei Honaraversprechen müsste ich allerdings vorher wissen, wieviel Geld man für die fertige Datensatzmaske als Delphi Komponente auf dem Markt verlangen könnte. Wäre eine echte Alternative, da auch ich noch immer nach einer passenden Lehrstelle suche. Da käme eine kommerzielle Vermarktbarkeit einer selber geschiebenen Delphi Komponente wie gerufen. Hast Du vielleicht ne Ahnung, welche Firmen so was brauchen könnten und was solch eine Komponente dann noch können müsste?
Dann wäre die Sache einfacher, weil ich dann einen Anreiz für Deine bzw. Eure Hilfe bieten könnte.
Wenn aber die Kompo nicht verkäuflich ist, dann bitte bitte lasst Gnade walten und sgt mir wenigstens, wie ich den Fehler eingrenzen kann.
Kann ja sein, das Parent in:
Delphi-Quellcode:
if value <> nil then
begin
FDataLink.DataSource := Value;
den Wert NIL hat. Aber hier:
Delphi-Quellcode:
constructor TCR_DB_Editor.Create(AOwner: TComponent);
begin
inherited Create(AOwner); UpdatingControls := false;
ControlStyle := ControlStyle + [csReplicatable];
FControlList := TStringList.Create;
FDataLink := TCR_DB_EditorLink.Create(self);
end;
wird dem FDataLink doch eine Adresse zugewiesen. Der Debugger meckert diese Stelle zumindest nicht an.
Außerdem meckert der Debugger im Einzelschrittbetrieb nicht bei Parent, sondern bei FDataLink.DataSource.
[edit=mkinzler]Delphi-Tags ergänzt Mfg, mkinzler[/edit]