Ich habe mir StringGrid nochmal genau angesehen.
Zitat:
Beim Drehen des Mausrades wird halt immer weiter in den Zeilen nach oben oder unten gescrollt. Leider wird dabei vergessen auf das Ende des Grids zu achten und damit aus dem Grid rausgescrollt, anstatt dann mit dem Scrollen aufzuhören, wenn die erste bzw. die letzte Zeile im Grid erreicht ist.
Nein, daran liegt es nicht. Wenn das StrGr mit Mausklick oder SetFocus den Fokus hat, wird ein Rahmen um ein Feld gelegt = selektiert. Dann lässt sich mit dem Mausrad oder Pfeltasten/Blättern scrollen oder blättern ohne Problem auch bis zum Ende und wieder zum Anfang zurück.
Delphi-Quellcode:
procedure TSpitzeForm.SpitzeTabExit(Sender: TObject);
var
MyRect: TGridRect;
begin
MyRect.Left:=-1; // Löscht das selektierte Feld in der Tabelle
MyRect.Top:=-1;
MyRect.Right:=-1;
MyRect.Bottom:=-1;
TStringGrid(Sender).Selection:=MyRect
end; //dieser Tipp aus einer Tippsammlung ist unvollständig geprüft worden!
Wenn man diese Routine einfügt und dann das StrGr verlässt und jetzt das Mausrad über dem StrGr dreht, löst das den beschriebenen Fehler aus. Falls man die Routine weglässt, wird das Feld beim Verlassen des StrGr
blau eingefärbt
aber der Fehler tritt nicht auf!
Es bleibt also die Wahl, entweder die Blaufärbung des Feldes hin zu nehmen oder die Fehlermeldung zu provozieren. Blöd gemacht.
Himitsu, ich bin der "Niemand", der ganz gerne StrGr benutzt und finde diese Komponente nicht so schlecht aber ich bin auch nur Hobby-Programmierer. StrGr ist tatsächlich seit Delphi 3 unverändert.