0

我有一个带有 TAdvStringGrid 组件的 fowm。网格的第 0 列包含一组不连续的整数,第 1 列包含一个字符串,该字符串可以是空的,也可以是一个单词。第 1 列有一个 edComboList 就地编辑器,其中包含允许的值。我正在尝试在例程中设置第 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);
}
4

1 回答 1

0

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

   TGridRect gr = sgFlights->Selection;
   gr.Top = 0;
   gr.Bottom = 0;
   sgFlights->Selection = gr;
于 2013-06-02T18:06:47.397 回答