Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Удаление строк из StringGrid

16K
04 августа 2008 года
iRain
72 / / 12.03.2008
Нужно удалить строку из TSringGrid!
Столкнулся с проблемой. Поидее есть какая то страндартная функция удаления строки из таблици, но нигде не могу найти. Помогите пожалуйста!
246
04 августа 2008 года
GIZMO
1.8K / / 30.07.2004
Цитата: iRain
Нужно удалить строку из TSringGrid!
Столкнулся с проблемой. Поидее есть какая то страндартная функция удаления строки из таблици, но нигде не могу найти. Помогите пожалуйста!


1. Старайся писать без опечаток (Строки не удаРяют их удаляют).
2. По правилам конференции, перед тем как задать вопрос ФАК читать обязательно. Если-бы ты сделал это, то увидел-бы Вопрос 25. Как удалить строку/столбец в StringGrid?
Если ты несделаешь это еще раз, то будут санкции.

16K
05 августа 2008 года
iRain
72 / / 12.03.2008
Я в шоке... :confused: Если ради удаления одной строки я буду такой код писать, то я патом запутаюсь!!!
Если уже нету функции (а она должна быть) удаления строки, то можно заморочится через цикл "for" и код выйдет как минимум в два раза меньше! Я спрашиваю про ункцию, примерно такую, как в TMemo:

Memo1->Lines->Delete(N);

Где N-номер строки!

P.S.: Прошу прощения за опечатки.
16K
05 августа 2008 года
iRain
72 / / 12.03.2008
А вот и код:

Код:
void __fastcall TForm1::delrow(TStringGrid *grid, int row)
{
 if (grid->RowCount == 1)
  {
        grid->Rows[0]->Clear();
        return;
  }

 for (int i=row; i < grid->RowCount; i++)
  {
        for (int j=0; j < grid->ColCount; j++)
         {
                grid->Cells[j]=grid->Cells[j][i+1];
         }
                grid->Rows[i+1]->Clear();
  }
  grid->RowCount--;
}
246
05 августа 2008 года
GIZMO
1.8K / / 30.07.2004
Цитата: iRain
А вот и код:

Код:
void __fastcall TForm1::delrow(TStringGrid *grid, int row)
{
 if (grid->RowCount == 1)
  {
        grid->Rows[0]->Clear();
        return;
  }

 for (int i=row; i < grid->RowCount; i++)
  {
        for (int j=0; j < grid->ColCount; j++)
         {
                grid->Cells[j]=grid->Cells[j][i+1];
         }
                grid->Rows[i+1]->Clear();
  }
  grid->RowCount--;
}



И в чем преймущество? Хоть убей не вижу. 2-а цикла и по-ячеечное копирование?

ЗЫ: специальной ф-ии для удаления строки в TStringGrid нет, по крайней мере в VCL версий 5 и 6.

343
06 августа 2008 года
lena_ki
282 / / 14.04.2005
Удаление строки присутствует в TCustomGrid: : DeleteRow(int ARow), но эта функция закрыта(protected) для свободного использования.
Поэтому:
 
Код:
class TPublicGrid: public  TStringGrid
{
    public:
        using TStringGrid::DeleteRow;
};


В программе:
((TPublicGrid*)StringGrid1)->DeleteRow(2);

Или так:
Код:
class PACKAGE TMyStringGrid: public TStringGrid
{
private:
protected:
public:
__fastcall TMyStringGrid(Classes::TComponent* AOwner):
TStringGrid(AOwner){};
void _fastcall MoveRow(int from,int to){RowMoved(from,to); }
void _fastcall RowDelete(int arow){DeleteRow(arow);}
void _fastcall InsertRow(int arow){RowCount++; RowMoved(RowCount-1,arow);}
};
246
06 августа 2008 года
GIZMO
1.8K / / 30.07.2004
Цитата: lena_ki
Удаление строки присутствует в TCustomGrid: : DeleteRow(int ARow), но эта функция закрыта(protected) для свободного использования.
Поэтому:
...



да, есть такой прием, молодец:)

ЗЫ: если заглянуть в исходник grids.pas:

 
Код:
procedure TCustomGrid.DeleteRow(ARow: Longint);
begin
  MoveRow(ARow, RowCount - 1);
  RowCount := RowCount - 1;
end;

и т.д.
11
06 августа 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: GIZMO
да, есть такой прием, молодец:)

ЗЫ: если заглянуть в исходник grids.pas:
 
Код:
procedure TCustomGrid.DeleteRow(ARow: Longint);
begin
  MoveRow(ARow, RowCount - 1);
  RowCount := RowCount - 1;
end;

и т.д.



а зачем опустил рейтинг?
ЗЫ: Надо в ФАК - проще и короче способ.

246
06 августа 2008 года
GIZMO
1.8K / / 30.07.2004
Цитата: oxotnik333
а зачем опустил рейтинг?


мля, хотел поднять :(
ша попробую исправить

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог