In meinem Programm kommt eine TChecklistbox zum Einsatz.
Mit der Maus funktioniert alles ganz gut, Probleme gibts wenn wir die Tastatur bemühen.
Plattform Windows, Fehler tritt unter XP und W7 auf, Lazarus 1.0.2 r39019 FPC 2.6.0 i386-win32-win32/win64
Beispiel: (TChecklistbox mit 2 Items)
- mit TAB in die TChecklistbox --> das erste Item erhellt den Fokus (XP, dünner Rahmen).
- mit den Pfeiltasten wird kann ich nun das Item auswählen.
Allerdings bewegt sich der "Cursor" nun nicht, sondern zunächst wird bei Tastendruck das Item markiert (blau).
Erst beim zweiten KeyDown bewegt sich der Cursor. - mit der Spacetaste kann ich die Checkbox auf checked setzen.
Wenn ich aber gleich auf im ersten Item die Spacetaste drücke, weil ich genau dieses erste "checken" will, stürzt das Programm ab!
Exception-Fehlermeldung: TChecklistbox Index -1 out of bounds 0 .. 1
Mein Workaround ist momentan, daß ich im Programm prüfen lasse, ob was in der TChecklistbox drin ist :
- benutze einen Timer
der natürlich schneller sein muss als ein flinker Finger
- TChecklistbox.enabled := (TChecklistbox.items.count>0);
Damit es gar nicht erst den Fokus bekommt. - if (TChecklistbox.Items.Count>0) AND (if TChecklistbox.ItemIndex<0) then TChecklistbox.ItemIndex:=0;
Wieso bekommt TChecklistbox.itemindex nicht gleich den Wert 0, wenn es das erste Mal den Fokus erhält (und auch was drin ist)?
Kann man das im Formulareditor/Objektinspektor vorgeben?
Ist das ein Bug? (Glaub ich selber nicht.)
Mein Workaround ist umständlich, weil ich immer die Änderungen in der TChecklistbox berücksichtigen muss.
Vielleicht kann mir jemand bitte einen Tipp geben.
jrx