Есть следующий код:
type
StringGridForEnteringData=class(TStringGrid)
public
bFlagOfAddingAlternative: Boolean;
bFlagOfEditingCell: Boolean;
rowOfEditingCell: Integer;
colOfEditingCell: Integer;
EditingValue: String;
constructor Create(Owner: TComponent);
destructor Destroy();
procedure StartEditCell(row, col: Integer);
procedure EndOfEditingCell(row,col: Integer; const value: String);virtual;abstract;
procedure SetEditText(ACol, ARow: Integer; const Value: String);override;
function SelectCell(ACol, ARow: Longint): Boolean;override;
procedure KeyPress(var Key: Char);override;
procedure DoExit();override;
procedure Clear();
end;
constructor StringGridForEnteringData.Create(Owner: TComponent);
begin
inherited;
Options:=Options+[goEditing,goColSizing];
bFlagOfAddingAlternative:=false;
bFlagOfEditingCell:=false;
rowOfEditingCell:=-1;
colOfEditingCell:=-1;
EditingValue:='';
end;
destructor StringGridForEnteringData.Destroy();
begin
inherited;//<-вылетает здесь
end;
type
StringGridForEnteringDataMethod4=class(StringGridForEnteringData)
public
constructor Create(Owner: TComponent; Cell00: String; Captions: Array of String; dimension: Integer);
destructor Destroy();
procedure EndOfEditingCell(row,col: Integer; const value: String);override;
end;
constructor StringGridForEnteringDataMethod4.Create(Owner: TComponent; Cell00: String; Captions: Array of String; dimension: Integer);
var i: Integer;
begin
inherited Create(Owner);
FixedRows:=1;
FixedCols:=1;
ColCount:=dimension+1;
RowCount:=dimension+1;
Cells[0,0]:=cell00;
for i:=0 to dimension-1 do
begin
Cells[i+1,0]:=Captions[i];
Cells[0,i+1]:=Captions[i];
end;
end;
destructor StringGridForEnteringDataMethod4.Destroy();
begin
inherited;
end;
Вопрос такой, почему, если во время редактирования Grid-a типа StringGridForEnteringDataMethod4 вызвать деструктор, то программа вылетает c ошибкой Access violation at address 0000000?