Das komische ist ja, dass die alte Version funktioniert:
Delphi-Quellcode:
procedure TForm1.DeleteSubject(Sender : TObject);
var row,i,i2:integer;
begin
row:=(Sender as TButton).Tag;
if row=High(EditsArray) then
begin
for i2 := 1 to 6 do
begin
EditsArray[row][i2].Free;
end;
BtnLoeschenArray[row].Free;
end else
begin
for i := row to High(EditsArray)-1 do
begin
for i2 := 1 to 6 do
begin
EditsArray[i][i2].text:=EditsArray[i+1][i2].text;
end;
BtnLoeschenArray[i].Tag:=BtnLoeschenArray[i+1].Tag;
end;
for i2 := 1 to 6 do
begin
EditsArray[High(EditsArray)][i2].Free;
end;
BtnLoeschenArray[High(EditsArray)].Free;
end;
SetLength(EditsArray,Length(EditsArray)-1);
SetLength(BtnLoeschenArray,Length(BtnLoeschenArray)-1);
UpdateSubjects;
end;
Und die neue:
Delphi-Quellcode:
procedure TMarkFile.DeleteSubject(Sender : TObject);
var row,i,i2:integer;
begin
row:=(Sender as TButton).Tag;
if row=High(FEingabeArray) then
begin
for i2 := 1 to 5 do
begin
FreeAndNil(FEingabeArray[row].array_edit[i2]);
end;
FreeAndNil(FEingabeArray[row].button_loeschen);
FreeAndNil(FEingabeArray[row].Combobox_fach);
end else
begin
for i := row to High(FEingabeArray)-1 do
begin
for i2 := 1 to 5 do
begin
FEingabeArray[i].array_edit[i2].text:=FEingabeArray[i+1].array_edit[i2].Text;
end;
FEingabeArray[i].button_loeschen.Tag:=FEingabeArray[i+1].button_loeschen.Tag;
FEingabeArray[i].Combobox_fach.Text:=FEingabeArray[i+1].Combobox_fach.Text;
end;
FreeAndNil(FEingabeArray[High(FEingabeArray)].Combobox_fach);
FreeAndNil(FEingabeArray[High(FEingabeArray)].button_loeschen);
for i2 := 1 to 5 do
begin
FreeAndNil(FEingabeArray[High(FEingabeArray)].array_edit[i2]);
end;
end;
SetLength(FEingabeArray,Length(FEingabeArray)-1);
UpdateSubjects;
end;
funktioniert nicht, obwohl ich vom Prinzip her nichts geändert habe. Ich habe nur die verschiedenen Komponenten in ein array of record gepackt.