DBGrid: Zeile markiert über die sich die Maus befindet



  • War nur die Frage ob du TDBGrid verwendest, oder eine andere Fremdkomponente wie z.B. TntDBGrid ...
    Hat dein DBGrid auch den Focus, so wie es schon Jansen erwähnt hat ?



  • Focus? Was ist das und wie stell ich das ein???



  • Entweder klickst du in das DBGrid oder du setzt den Eingabefocus manuell:

    DBGrid1->SetFocus();
    


  • Damit hatte es auch nicht zu tun. Ich kann aber den Fehler schon ein wenig eingrenzen. Ich habe nämlcih eben anstelle meiner Datenbank die Datenbank von dem FishFact Beispiel genommen und in mein Grid reingeladen. Und jetzt frag mich bitte keiner warum aber es geht, genau so wie ich mir das vorgestellt habe. Aber woran liegt das, wenn ich nämlich meine Datenbank wieder in das Grid lade geht es nicht. Also muss es mit der Datenbank zu tun haben, aber waran genau????



  • Ich frag Dich aber.
    Wie hast Du die einzelenen Datenbanken genau angesprochen. Es liegt garantiert nicht an der Datenbank selbst, sondern ist irgend eine Einstellung von DataSet oder DataSource etc.

    Vergleiche genau die Objekte. Wenn Du den Unterschied findest, hast Du wahrscheinlich Deine Ursache.



  • Das denke ich nicht. Denn als ich die Beispiel Datenbank von dem FishFact Programm in mein Grid übertragen habe, habe ich nichts geändert. Ich habe nur eine andere Datenbank gewählt. Von daher denke ich das es nicht an den Einstellungen liegen kann, da ich wie gesagt an den Einstellungen nichts vorgenommen habe. Ich kann mir auch nicht erklären wie und warum es an der Datenbank liegt, aber es kann nur daran liegen.



  • Versuch mal folgendes:

    class TMyDBGrid :public TDBGrid
    {
        public:
        __property Row;
    };
    
    void __fastcall TForm1::DBGrid1MouseMove(TObject *Sender,
          TShiftState Shift, int X, int Y)
    {
       TGridCoord coord = DBGrid1->MouseCoord(X,Y);
       if(coord.X>0&&coord.Y>0)
       {
          DBGrid1->DataSource->DataSet->MoveBy(coord.Y - reinterpret_cast< TMyDBGrid* >(DBGrid1)->Row);
          DBGrid1->SelectedIndex = coord.X-1;
       }
    
    }
    


  • In dem Zusammenhang ist mir aber was anderes aufgefallen.

    Die ganze Lösung funktioniert bei mir nur solange die Zeilen im Original des Grid sichtbar sind. Sobald ich einen Grid mit vertikalem Scrollbalken habe und in Zeilen gescrollt bin, die normalerweise "unsichtbar" weil zu weit unten sind, und dann mit der Maus über das Grid fahre, funktioniert das Ganze nicht mehr.



  • Wahnsinn, es geht!!!

    Vielen dank an alle!

    Hätte nie gedacht das dies noch hinhaut



  • @hellic

    Mit Deinem Code-Schnipsel funktioniert's dann auch bei meinen "unsichtbaren" Zeilen. Auch von mir ein großes Merci 👍 .

    Wieder ein paar nützliche Sachen in der Toolbox.


Anmelden zum Antworten