EInvalidGridOperation bei Mausradbenutzung



  • Hallo,

    habe ein TStringGrid und darin verwende ich die Ereignisse
    - OnDrawCell
    - OnMouseDown
    - OnSelectCell

    Alle 3 Routinen sind Try/Catch(...) eingebettet.

    Ich setze den Focus auf das TStringGrid; es ist aber keine Zelle
    selektiert. Wenn ich nun mein Mausrad nach unten drehe, erhalte ich folgende
    Fehlermeldung (im IDE und auch in der EXE):

    ---------------------------
    Benachrichtigung über Debugger-Exception
    ---------------------------
    Im Projekt NetCat_Finder_3.exe ist eine Exception der Klasse EInvalidGridOperation aufgetreten. Meldung: 'Gitterindex außerhalb des zulässigen Bereichs'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
    ---------------------------
    OK Hilfe
    ---------------------------

    Der IDE springt im Quellcode nirgends hin und bietet mir nur die Option CPU-Fenster an. Laut Handbuch sollte der Fehler also nicht direkt in den 3 Ereignissen auftreten, sondern woanders. Aber wie finde ich diese Stelle bzw
    wie kann ich diesen Fehler eingrenzen?

    Habe mir jetzt erstmal beholfen mit folgendem Ereigniss:

    void __fastcall TForm1::frm1_grdGeraetMouseWheelDown(TObject *Sender, TShiftState Shift, TPoint &MousePos, bool &Handled)
    {Handled=true;                                                                  // Mausrad ignorieren
    }
    void __fastcall TForm1::frm1_grdGeraetMouseWheelUp(TObject *Sender, TShiftState Shift, TPoint &MousePos, bool &Handled)
    {Handled=true;                                                                  // Mausrad ignorieren
    }
    

    Dann ist der Fehler weg; wüsste halt nur gerne wie obiger Fehler zu erkennen bzw. im IDE einzugrenzen ist, wenn man nur das CPU Fenster bekommt. Danke für jeden lehrreichen Tip.

    🙂 Stefan Scholz



  • Ich würde mir eher mal anschauen was z.B. im OnSelectCell steht.Das wird auch durchs Mausrad drehen aufgerufen.

    Alle 3 Routinen sind Try/Catch(...) eingebettet.

    Du meinst das Try/Catch ist in den Ereignissen eingebettet oder ?



  • Hallo, Stefan

    habe die Routine mit Haltepunkt versehen, beim Drehen des Mausrades
    kommt er aber garnicht mehr dahin. Die Meldung entsteht also woanders;
    bekomme aber leider nicht heraus, wo... 😕

    Trotzdem danke für den Tipp, (auch) Stefan



  • Hast du die Selection in den negativen Koordinatenbereich verschoben? In dem Fall wäre die Exception ja nachvollziehbar.


Anmelden zum Antworten