[ Mr. Rejn @ 12.12.2005. 12:02 ] @
Da li se neko suocio sa ovim problemom kada je hteo da obrise sadrzaj
tabele tipa TStringGrid pomocu metode Clear? Kompajler daje ovu chudnu
poruku kada se stavi StringGrid->Rows->Clear():
Code:

[C++ Error] prvi.cpp(685): E2193 Too few parameters in call to '_fastcall
TStringGrid::GetRows(int)'

Treba li reci da uopste nisam ni koristio GetRows(int) metodu?
[ X Files @ 12.12.2005. 12:27 ] @
Š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(); 


[ Mr. Rejn @ 12.12.2005. 14:43 ] @

Da, mislio sam samo na brisanje sadrzaja redova,bez diranja ostalih stvari.

Prvi primer resava problem sasvim zadovoljavajuce.

Hvala na iscrpnom odgovoru,to bi bilo to za sada.
Pozdrav!
[ X Files @ 12.12.2005. 15:14 ] @
Zaboravih da kazem, ono WM_SETREDRAW ti je zbog ruznog vizuelnog efekta koji
se moze desiti kada se nesto Refresh()uje radi brisanja vise redova.