Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

TStringGrid-part2...brisanje sadrzaja

[es] :: C/C++ programiranje :: TStringGrid-part2...brisanje sadrzaja

[ Pregleda: 2066 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
*.bankerinter.net.



+4 Profil

icon TStringGrid-part2...brisanje sadrzaja12.12.2005. u 12:02 - pre 223 meseci
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?
Ag + Na -> Xe
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: TStringGrid-part2...brisanje sadrzaja12.12.2005. u 12:27 - pre 223 meseci
Š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(); 


 
Odgovor na temu

Mr. Rejn
Deki Karamatijević
Sremčica

Član broj: 2514
Poruke: 515
195.252.126.*



+4 Profil

icon Re: TStringGrid-part2...brisanje sadrzaja12.12.2005. u 14:43 - pre 223 meseci

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!
Ag + Na -> Xe
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: TStringGrid-part2...brisanje sadrzaja12.12.2005. u 15:14 - pre 223 meseci
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.
 
Odgovor na temu

[es] :: C/C++ programiranje :: TStringGrid-part2...brisanje sadrzaja

[ Pregleda: 2066 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.