Serg |
Отправлено: 02.07.2003, 15:15 |
|
Не зарегистрирован
|
Суть вопроса:
есть объект TStringGrid, необходимо удалить из него строку с номером ARow.
Подскажите пожалуйста, как правильно применить DeleteRow(long ARow)). |
|
Guest |
Отправлено: 02.07.2003, 22:39 |
|
Не зарегистрирован
|
Тебе надо сделать так: сдвинуть все строки вверх на 1, а поледнюю удалить. Ето в теории.
Пример:
for (int i=ARow; iRowCount; i++)
SG1->Cells[0][i]=SG1->Cells[1][i+1];
SG1->RowCount-=1;
P.S.
SG1 ето StringGrid1. |
|
Serg |
Отправлено: 03.07.2003, 07:17 |
|
Не зарегистрирован
|
Уж очень хочеца DeleteRow применить...
Пряма наваждение какое-то...
??? |
|
Георгий |
Отправлено: 03.07.2003, 12:53 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
DeleteRow — это protected метод — и простым смертным он не доступен.
Хотя причиты скрытия его не совсем ясны:
CODE | class MyStringGrid:public TStringGrid
{
public:
__fastcall virtual MyStringGrid(Classes::TComponent* AOwner):TStringGrid(AOwner){};
void __fastcall DeleteRow(int a){return TStringGrid::DeleteRow(a);};
};
static MyStringGrid*sg;
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
sg=new MyStringGrid(this);
sg->Parent=this;
int i,j;
for (i=0;i<sg->ColCount;i++)
for (j=0;j<sg->RowCount;j++)
sg->Cells[i][j]=AnsiString(i)+AnsiString(j);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
sg->DeleteRow(2);
} |
и этот код прекрасно работает |
|