C++builder TAdvStringGrid罐';t更新所选单元格
我有一个带有TAdvStringGrid组件的fowm。网格的第0列包含一组非连续整数,第1列包含一个字符串,该字符串可能为空或一个单词。列1具有包含允许值的edComboList就地编辑器。我试图在例程中设置第1列中的值 下面的代码有效,但当前选定的单元格除外。该单元格中的文本值保持不变。我怀疑这与该列有一个编辑器有关,但我不知道如何在执行更新之前禁用编辑器,甚至无法确定代码中当前选定的单元格C++builder TAdvStringGrid罐';t更新所选单元格,c++builder,vcl,tms,C++builder,Vcl,Tms,我有一个带有TAdvStringGrid组件的fowm。网格的第0列包含一组非连续整数,第1列包含一个字符串,该字符串可能为空或一个单词。列1具有包含允许值的edComboList就地编辑器。我试图在例程中设置第1列中的值 下面的代码有效,但当前选定的单元格除外。该单元格中的文本值保持不变。我怀疑这与该列有一个编辑器有关,但我不知道如何在执行更新之前禁用编辑器,甚至无法确定代码中当前选定的单元格 int MyForm::SetAC(String & Flt, String & A
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);
}
int MyForm::SetAC(String&Flt,String&AC){
TFindParams fp=TFindParams();
fp(0){
sgFlights->Cells[1][p.y]=AC;
}
年回报率;
}
void MyForm::LoadFACfromGDB(){
标准::mapFlightMatcher;
//…填充航班匹配器的代码。。。
map::const_迭代器itr;
对于(itr=FlightMatcher.begin();itr!=FlightMatcher.end();++itr){
字符串Flt=IntToStr(itr->first);
字符串AC=itr->秒;
SetAC(Flt,AC);
}
我发现这个问题的解决方案是删除选择。令人惊讶的是,ClearSelection方法没有做到这一点。在这种情况下,我有一个固定行和一个固定列,因此将选择设置为0,0可以有效地删除它
TGridRect gr = sgFlights->Selection;
gr.Top = 0;
gr.Bottom = 0;
sgFlights->Selection = gr;