2013-05-29 3 views
0

У меня есть fowm с компонентом TAdvStringGrid. Столбец 0 сетки содержит несущественную группу целых чисел, а столбец 1 содержит строку, которая может быть пустой или одно слово. В столбце 1 есть редактор edComboList inplace, который включает допустимые значения. Я пытаюсь установить значения в столбце 1 в подпрограмме.TAdvStringGrid не может обновить выбранную ячейку

Код ниже работает, за исключением выбранной ячейки. Текстовое значение в этой ячейке остается неизменным. Я подозреваю, что это связано с тем, что для этого столбца есть редактор, но я не могу понять, как отключить редактор перед выполнением обновления, или даже определить, какая ячейка в данный момент используется в коде.

int MyForm::SetAC(String & Flt, String & AC) { 
    TFindParams fp = TFindParams(); 
    fp << fnFindInPresetCol << fnMatchFull; 
    // sgFlights is the name of the TAdvStringGrid 
    TPoint p = sgFlights->Find(TPoint(0, 0), Flt, fp); 
    if (p.y > 0) { 
     sgFlights->Cells[1][p.y] = AC; 

    } 
    return p.y; 
} 
void MyForm::LoadFACfromGDB() { 
    std::map<int, String>FlightMatcher; 
    // .. code to populate flight matcher... 
     map<int, String>::const_iterator itr; 
     for (itr = FlightMatcher.begin(); itr != FlightMatcher.end(); ++itr) { 
     String Flt = IntToStr(itr->first); 
     String AC = itr->second; 
     SetAC(Flt, AC); 
} 

ответ

0

Решение, которое я нашел с этой проблемой, состояло в том, чтобы удалить выделение. Удивительно, что метод ClearSelection не делает этого. В этом случае у меня есть одна фиксированная строка и один фиксированный столбец, поэтому установка выделения на 0,0 эффективно удаляет его.

TGridRect gr = sgFlights->Selection; 
    gr.Top = 0; 
    gr.Bottom = 0; 
    sgFlights->Selection = gr; 
Смежные вопросы