TStringGrid Inplace Editor und Cursor Left/Right



  • Hallo nochmal,

    habe ein weiteres kleines Problem mit dem TStringGrid Inplace Editor:
    Ich möchte mit den Cursor Tasten durch das Grid navigieren können, aber bestimmte Spalten dabei überspringen.
    Im OnSelect Handler setze ich das CanSelect Flag der gesperrten Spalten auf false, damit die nächste Zelle nicht angesprungen werden kann. Stattdessen soll der Fokus auf die übernächste Zelle gesetzt werden, um die gesperrte Zelle zu überspringen. Dazu habe ich im OnKeyDown Handler eine Überprüfung, ob VK_RIGHT gedrückt wurde:

    void __fastcall MyForm::OnKeyDownGrid( TObject* Sender, WORD& Key, TShiftState State )
    {
       if( Key == VK_RIGHT && Grid->Col == 2 )
       {
          // Wechsel aus Spalte 2 in Spalte 4
          Grid->Col = 4;
    
          // Key schlucken
          Key = 0;
       }
    }
    

    Dummerweise kann ich nun im Text des Inplace Editors nicht mehr mit der Cursor Right Taste arbeiten, um mich im Text zu bewegen, da dann in Spalte 4 gesprungen wird.
    Ich brauche also eine Unterscheidung, ob ich mich im Text des Editors nach rechts bewege oder ob die Cursor Right Taste tatsächlich einen Spaltensprung nach rechts bewirken soll.
    Kennt sich da jemand aus?



  • TStringGrid::EditorMode abfragen!?



  • Jau, hat geklappt, danke!

    Edit:
    Ne, klappt doch nicht. Da das Grid das Flag goAlwaysShowEditor hat ist EditorMode immer true.



  • Ich denke, du musst den Mode explizit setzen?



  • Den Schnipsel in meinen dritten Posting habe ich von irgendeiner Delphi Seite, aber es hat sich herausgestellt, dass ich das Flag nicht setzen muss, wenn das Grid die Option goAlwaysShowEditor hat.
    Das Grid soll sich grob wie ein Excel Sheet verhalten, inklusive Cursor Navigation, daher muss ich das goAlwaysShowEditor Flag benutzen.


Log in to reply