wxGridCellChoiceEditor: mögliche Auswahlen erneuern



  • Hallo,

    wie kann man die Auswahlmöglichkeiten ändern?

    als erstes wird eine Zelle von einem wxGrid mit einem wxGridCellChoiceEditor belegt:

    // choices ist ein "wxString *" mit N Elementen
    this->_grid->SetCellEditor(0, 0, new wxGridCellChoiceEditor(N, choices));
    

    Ändern müsste dann eigentlich mit SetParameters() funktioniern,
    indem man die neuen Items Kommagetrennt mitgibt.

    // die neuen Items holen (getrennt durch Komma)
    wxString choicesStr = this->_getValidChoicesForCol(0);
    
    // Neue Werte setzten.
    this->_grid->GetCellEditor(0, 0)->SetParameters(choicesStr);
    

    Leider geht das ganze scheinbar nur ein einziges mal:
    Beim ersten mal werden alle Items neu gesetzt (entsprechend
    dem Inhalt von "choicesStr".
    Bei jedem weiteren Aufruf bleiben die alten Werte in der Anzeige erhalten.
    Es kommen weder neue Werte hinzu, noch werden welche rausgelöscht.

    Bin wirklich ratlos...

    Martin



  • falls es wen interessiert:
    als workaround:

    Statt die Werte neu setzten, den wxGridCellChoiceEditor durch einen neuen
    ersetzen:

    // den alten Editor zwischenspeichern
    wxGridCellEditor * oldEditor = this->_grid->GetCellEditor(row, col);
    
    // die neuen Auswahlmöglichkeiten anfordern
    wxArrayString choices;
    this->_getValidChoicesForCol(col, choices);
    
    // neuen Editor mit den neuen Werten erzeugen und einsetzen
    this->_grid->SetCellEditor(0, col, new wxGridCellChoiceEditor(choices));
    
    // alten Editor löschen
    oldEditor->Destroy();
    

Anmelden zum Antworten