Показать сообщение отдельно
Старый 30.09.2009, 15:39   #1  
Alexanderrrr is offline
Alexanderrrr
Участник
Аватар для Alexanderrrr
 
54 / 19 (1) ++
Регистрация: 06.03.2009
Адрес: Саратов
Позиционирование в гриде
Доброго времени суток, уважаемые гуру аксапты!

Не могли бы вы мне помочь в следующем:
имеется форма с тремя датасорсами: RContractTable, ObjectTable, PointAccountTable.
На форме грид, свойство datasourse=RContractTable.

Необходимо было добавить возможность удаления строки/строк из грида, для последующего вывода в отчет только нужных строчек.
Удаление организовал по кнопке; ее метод кликед:
X++:
void clicked()
{
    QueryBuildDatasource    pointTable;
    query q;
    queryBuildRange qbr;
    RContractTable              RContract;
    ObjectTable              object;
    PointAccountTable        pointAccount;
    int c;
    ;

    for (RContract = RContractTable_ds.getFirst(true) ? RContractTable_ds.getFirst(true) : RContractTable_ds.cursor(); RContract; RContract = RContractTable_ds.getNext())
      {
      c++;
      }

    qbr=pointTable.findRange(FieldNum(ICLPointAccountTable,PointAccountId));
    if (qbr)
    {
    for (RContract = RContractTable_ds.getFirst(true) ? RContractTable_ds.getFirst(true) : RContractTable_ds.cursor(); RContract; RContract = RContractTable_ds.getNext())
      {
       object = RContract.joinChild();
       pointAccount = object.joinChild();
    qbr.value(qbr.value()+',!'+pointAccount.PointAccountId);
      }
    }
    else
    {
    if (c==1)
    {
     qbr=pointTable.addRange(FieldNum(ICLPointAccountTable,PointAccountId));
     qbr.value('!'+ICLPointAccountTable.PointAccountId);
      
    }
    else
    {
qbr=pointTable.addRange(FieldNum(ICLPointAccountTable,PointAccountId));
    for (RContract = RContractTable_ds.getFirst(true) ? RContractTable_ds.getFirst(true) : RContractTable_ds.cursor(); RContract; RContract = RContractTable_ds.getNext())
      {
                object = RContract.joinChild();
                pointAccount = object.joinChild();

    qbr.value(qbr.value()+',!'+pointAccount.PointAccountId);
      }
    }
    }
 RContractTable_ds.research();
 }

Работает, как и нужно. Но после research курсор уходит на первую запись в гриде.

На форуме читал похожие темы, но то, что мне нужно не нашел..ведь мне нужно запоминать не позицию выделенной строки, а позицию следующей за ней, поскольку выделенная удаляется.
Не направите ли на путь истинный?

п.с. если было такое на форуме, очень извиняюсь..
__________________
..в каждой программе есть хотя бы одна ошибка..

Последний раз редактировалось Dron AKA andy; 30.09.2009 в 17:53.