Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > StringGrid и удаление


Автор: XPyCT 2.7.2008, 15:24
Здравствуйте! 
использую TPageContro на нем две вкладки и соответсвенно 2 стрингрида
StringGrid1->Name ="SGPR";
StringGrid2->Name="SGData";
 я удаляю из первой таблицы к примеру запись  значение из первой ячейки загоняю в переменую
по том на основе  значения этой переменной я ищу во второй таблице совпадения и тоже удаляю
ток вот во второй таблице удаляет ток первую найденую запись! как с этим боротся ? прошу помощи
привожу код
Код

void __fastcall TfmMain::MenuDeleteRowClick(TObject *Sender)
{
int cROW,i;
AnsiString cStrCell;
cROW=SGPR->Row;
if (MessageDlg("Вы действительно хотите удалить эту запись? "+SGPR->Cells[1][cROW],mtConfirmation,TMsgDlgButtons() << mbOK<<mbCancel,0)==mrOk)
  {
     class TProxyGrid : public TStringGrid
    {
       public:
        using TStringGrid::DeleteRow;

   };
         cStrCell= SGPR->Cells[1][cROW];

    ((TProxyGrid*)SGPR)->DeleteRow(cROW); //pervaya tablita

  }
//....................SGPRD//SGData vtoraya tablita start

      for(i=1; i<SGData->RowCount; i++)
      if(SGData->Cells[1][i]==cStrCell)
      {
      class TProxyGrid : public TStringGrid
    {
       public:
        using TStringGrid::DeleteRow;

   };

    ((TProxyGrid*)SGData)->DeleteRow(i);  

      } //....................SGData vtoraya tablita end
}
//---------------------------------------------------------------------------

Автор: XPyCT 2.7.2008, 16:23
Цитата(XPyCT @ 2.7.2008,  15:24)
Здравствуйте! 
использую TPageContro на нем две вкладки и соответсвенно 2 стрингрида
StringGrid1->Name ="SGPR";
StringGrid2->Name="SGData";
 я удаляю из первой таблицы к примеру запись  значение из первой ячейки загоняю в переменую
по том на основе  значения этой переменной я ищу во второй таблице совпадения и тоже удаляю
ток вот во второй таблице удаляет ток первую найденую запись! как с этим боротся ? прошу помощи
привожу код
Код

void __fastcall TfmMain::MenuDeleteRowClick(TObject *Sender)
{
int cROW,i;
AnsiString cStrCell;
cROW=SGPR->Row;
if (MessageDlg("Вы действительно хотите удалить эту запись? "+SGPR->Cells[1][cROW],mtConfirmation,TMsgDlgButtons() << mbOK<<mbCancel,0)==mrOk)
  {
     class TProxyGrid : public TStringGrid
    {
       public:
        using TStringGrid::DeleteRow;

   };
         cStrCell= SGPR->Cells[1][cROW];

    ((TProxyGrid*)SGPR)->DeleteRow(cROW); //pervaya tablita

  }
//....................SGPRD//SGData vtoraya tablita start

      for(i=1; i<SGData->RowCount; i++)
      if(SGData->Cells[1][i]==cStrCell)
      {
      class TProxyGrid : public TStringGrid
    {
       public:
        using TStringGrid::DeleteRow;

   };

    ((TProxyGrid*)SGData)->DeleteRow(i);  

      } //....................SGData vtoraya tablita end
}
//---------------------------------------------------------------------------

Все  проблему решил!

Если требуется удалить в  двух таблицах а во второй удалить некое множество одинаковых значений то я сделал  так
  
  
Код



for(i=StringGrid1->RowCount; i>0; i--)
      {
      if(StringGrid1->Cells[1][i]==cRows)
      {
      class TProxyGrid : public TStringGrid
    {
       public:
        using TStringGrid::DeleteRow;

   };

    ((TProxyGrid*)StringGrid1)->DeleteRow(i);  //SGData vtoraya tablita

      }
      }


спс Охотник-Borland

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)