wxGrid SelectionModes



  • hallo,
    ich versuche, lt Anleitung auf dieser Seite
    https://docs.wxwidgets.org/trunk/classwx_grid.html
    den Selections-Modus für das wxGrid auf SingleSelection einzurichten. Dazu habe ich im public-Bereich das hinzugefügt:

    enum  	wxGridSelectionModes {
      wxGridSelectCells ,
      wxGridSelectRows ,
      wxGridSelectColumns ,
      wxGridSelectRowsOrColumns ,
      wxGridSelectNone
    }
    

    sowie CreateGrid lt Anleitung ergänzt:

    Grid1->CreateGrid(20,8, wxGridSelectionModes selmode = wxGridSelectCells);
    

    Nun erhalte ich folgenden Fehler:

    DBtool3.cpp:261:51: error: expected primary-expression before ‘selmode’
      261 |     Grid1->CreateGrid(20,8, wxGridSelectionModes selmode = wxGridSelectCells);
          |                                                  ^~~~~~~
    

    Was habe ich falsch gemacht?



  • @gokusa Du hast das aus der Deklaration mit der Parameterdefinition kopiert.

    Entweder:

    Grid1->CreateGrid(20, 8,  wxGridSelectCells);
    

    oder, da das eh der Default ist

    Grid1->CreateGrid(20, 8);
    


  • @gokusa sagte in wxGrid SelectionModes:

    Dazu habe ich im public-Bereich das hinzugefügt:

    enum wxGridSelectionModes {
    // ...
    }
    

    Das brauchst (bzw. solltest) du nicht kopieren, da es ja schon in den wxWidgets-Headern definiert ist.
    Bevor du mit einer UI-Lib arbeitest, solltest du aber die Grundlagen, wie das Aufrufen von Funktionen, kennen.



  • @Schlangenmensch

    Grid1->CreateGrid(20,8);
    

    hatte ich vorher, allerdings kann ich keinen Zellinhalt auslesen. Sobald ich die Methode per Button aufrufe, ist die Selection im Grid nicht mehr selektiert und ich erhalte

    invalid row or column index in wxGridStringTable
    

    Deshalb glaubte ich, es liegt am SelectionMode, wenn SingleSelection default ist lag ich da falsch.

    Edit: Hat sich erledigt, die aufrufende Methode lieferte kein int für row und col. Mit

    int row = Grid1->GetGridCursorRow();
            int col = Grid1->GetGridCursorCol();
    

    konnte ich das lösen.



  • @gokusa sagte in wxGrid SelectionModes:
    Was mir gerade noch aufgefallen ist:

    Dazu habe ich im public-Bereich das hinzugefügt:
    enum wxGridSelectionModes {
    wxGridSelectCells ,
    wxGridSelectRows ,
    wxGridSelectColumns ,
    wxGridSelectRowsOrColumns ,
    wxGridSelectNone
    }

    Das solltest du nicht machen, sondern du solltest die wxWidgets Definition davon verwenden.



  • @Schlangenmensch
    schon wieder entfernt.
    danke für die Hinweise


Anmelden zum Antworten