Ich habe beim Debuggen noch herausbekommen, dass obwohl mindestens 3 Komponenten auf der Scollbox vorhanden sind der scr_dbfields.parent.ComponentCount = 0 ist. Kann es sein, dass die Obejkte nicht korrekt als Childs zugewiesen werden und dadurch die Probleme entstehen?
Zumindest habe ich nun die Prozedur zum Erstellen so abgeändert, dass der Count hinhaut und das die Controls dem scr_dbfields als Childs zugewiesen werden.
Delphi-Quellcode:
procedure TForm1.TrytoCreateDBFields;
var
i:integer;
DBEdit:TDBEdit;
Labels:TLabel;
scr_dbfields:TScrollBox;
begin
scr_dbfields.Free;
scr_dbfields := TScrollbox.Create(TabSheet7);
scr_dbfields.Parent:=TabSheet7;
scr_dbfields.Align:=alClient;
with scr_dbfields do begin
for i:=0 to Table1.FieldCount-1 do
begin
case Table1.Fields.Fields[i].DataType of
ftString,ftInteger, ftAutoInc, ftSmallint, ftFloat,ftWord :
begin
//label erzeugen
Labels:= TLabel.Create(scr_dbfields);
Labels.Parent := scr_dbfields;
Labels.Left :=10;
Labels.Width:=85;
Labels.Alignment:=taRightJustify;
Labels.Top := (i * 30)+3;
Labels.Caption:=Table1.FieldList.Strings[i];
//dbfeld erzeugen
DBEdit:= TDBEdit.Create(scr_dbfields);
DBEdit.Parent := scr_dbfields;
DBEdit.Left :=100;
DBEdit.Top := i * 30;
DBEdit.DataSource:=DataSource1;
DBEdit.Name:=Table1.FieldList.Strings[i];
DBEdit.DataField:=Table1.FieldList.Strings[i];
ShowMessage(inttostr(scr_dbfields.ComponentCount))
end;
end;
end;
end;
end;
Trotzdem kommt immer noch die Fehlermeldung, dass er das letzte
DB-Feld nicht finden kann.