TAdvStringGrid无法更新所选单元格

时间:2013-05-29 21:32:37

标签: c++builder vcl tms

我有一个带有TAdvStringGrid组件的fowm。网格的第0列包含一个非顺序的整数组,第1列包含一个字符串,该字符串可以是空的或一个单词。第1列有一个edComboList inplace编辑器,其中包含允许的值。我正在尝试在例程中设置第1列中的值。

以下代码有效,除了当前选定的单元格。该单元格中的文本值保持不变。我怀疑它与该列的编辑器这一事实有关,但我无法弄清楚如何在进行更新之前禁用编辑器,或者甚至确定哪个是代码中当前选定的单元格。

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);
}

1 个答案:

答案 0 :(得分:0)

我发现此问题的解决方案是删除选择。令人惊讶的是,ClearSelection方法不会这样做。在这种情况下,我有一个固定的行和一个固定的列,因此将选择设置为0,0可以有效地删除它。

   TGridRect gr = sgFlights->Selection;
   gr.Top = 0;
   gr.Bottom = 0;
   sgFlights->Selection = gr;