我有一个带有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);
}
答案 0 :(得分:0)
我发现此问题的解决方案是删除选择。令人惊讶的是,ClearSelection方法不会这样做。在这种情况下,我有一个固定的行和一个固定的列,因此将选择设置为0,0可以有效地删除它。
TGridRect gr = sgFlights->Selection;
gr.Top = 0;
gr.Bottom = 0;
sgFlights->Selection = gr;