【问题标题】:TAdvStringGrid can't update selected cellTAdvStringGrid 无法更新选定的单元格
【发布时间】:2013-05-25 07:45:35
【问题描述】:

我有一个带有 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);
}

【问题讨论】:

    标签: c++builder vcl tms


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多