So sollte es klappen :
Erstelle eine Variable "oldindex" vom Typ Integer und initialisiere sie mit -1;
Delphi-Quellcode:
procedure TForm1.ComboBox1Select(Sender: TObject);
Var newIndex : Integer;
begin
newIndex := ComboBox1.ItemIndex;
if ComboBox1.Items[ComboBox1.ItemIndex][1]='_'
then begin
if oldindex<newIndex
then while (ComboBox1.Items.Count>(newIndex)) AND (ComboBox1.Items[newIndex][1]='_') // runterscrollen
do newIndex:=newIndex+1
else while (newIndex>-1) AND (ComboBox1.Items[newIndex][1]='_') // raufscrollen
do newIndex:=newIndex-1;
if (newIndex>ComboBox1.Items.Count-1) or (newIndex<=-1) // Ausserhalb des gültigen Bereiches ?
then newIndex := oldIndex;
ComboBox1.ItemIndex := newIndex;
end;
oldindex := newIndex;
end;
Alternativ kann man den Wert für "oldindex" auch im "Tag" der ComboBox ablegen. Das hätte den Vorteil, dass man die selbe Funktion für mehrere ComboBoxen nutzen kann, wenn man diese dann über den Sender
Code:
(Sender AS tComboBox). statt ComboBox1.
anspricht.
Ideal wäre natürlich eine eigene Klasse abzuleiten, in der man oldindex und die Grouping-Funktionen integriert...
Gruß
Guido R.