Šta podrazumevaš pod OBRIŠE sadržaj. Da li celu tabelu ili samo tekst?
Citat:
StringGrid->Rows->Clear();
Mislim da je ovo sto si pokusao nasledjeno iz TCustomGrid ali je protected u
TStringGrid, pa verovatno nece raditi...
Ako si mislio samo na brisanje SADRŽAJA, pri čemu tabela ostaje, probaj ovako:
Code:
StringGrid1->Perform( WM_SETREDRAW, FALSE, 0 );
for ( int x = StringGrid1->FixedRows; x < StringGrid1->RowCount; ++x )
StringGrid1->Rows[x]->Clear();
StringGrid1->Perform( WM_SETREDRAW, TRUE, 0 );
StringGrid1->Refresh();
Ako misliš na fizičko ništavanje i SADRŽAJA i REDA/REDOVA, probaj:
Code:
int index = RowToDelete;
SendMessage( StringGrid1->Handle, WM_SETREDRAW, FALSE, 0 );
StringGrid1->Rows[ RowToDelete ]->Clear();
for ( int x=RowToDelete; x<StringGrid1->RowCount; x++ )
{
if ( index < ( StringGrid1->RowCount-1 ) )
{
StringGrid1->Rows[ index ] = StringGrid1->Rows[ index+1 ];
index++;
}
}
if ( StringGrid1->RowCount > 2 )
StringGrid1->RowCount--;
else
StringGrid1->Rows[ 1 ]->Clear();
SendMessage( StringGrid1->Handle, WM_SETREDRAW, TRUE, 0 );
StringGrid1->Refresh();
... a možda će te zanimati i RowMoved() i ColumnMoved():
Code:
void __fastcall NewGrid::DelRow( int ARow )
{
for( int i = Arow+1; i<RowCount; i++ )
TStringGrid::RowMoved( i, i-1 );
Rows[RowCount]->Clear();
RowCount = RowCount - 1;
}
void __fastcall NewGrid::DelColumn( int ACol )
{
TStringGrid::ColumnMoved( Acol+1,Acol );
ColCount = ColCount - 1;
}
void __fastcall NewGrid::AddRow( int ARow )
{
RowCount = RowCount + 1;
for( int i = RowCount -1; i>ARow; i-- )
TStringGrid::RowMoved( i-1, i );
Rows[ARow]->Clear();
}