Hallo Carsten,
du hast eine Combo mit den Paaren ID, Personalname und eine Tabelle mit einem ID-Feld? Wenn du über die Tabelle scrollst, suchst du mit dem ID-Feld der Tabelle in der Combo, stimmt das soweit?
Nehmen wir an du suchst über einen Integer (Code so aus dem Kopf)
Delphi-Quellcode:
procedure <DeineForm>.SearchInCombo(Value:integer);
var
i: integer;
begin
for i := 0 to <ComboBox>.Items.Count-1 do begin
if (integer(<ComboBox>.Items.Objects[i])=Value) then begin
<ComboBox>.ItemIndex := i;
Break;
end;
end;
end;
Ist deine ID ein String, dann musst du den Code eben schnell auf String-Werte anpassen. Du kannst in den Beiträgen weiter oben nachschauen.
Jedoch hast du für diese Lösung immer noch das Problem, das für nicht gefundene IS-Werte, zumindest der letzte Wert angezeigt wird. Sollte dies nicht gewünscht sein, so musst du anstatt dem Break ein Exit verwenden und am Ende der Schleife den ItemIndex auf -1 setzen.
Delphi-Quellcode:
procedure <DeineForm>.SearchInCombo(Value:integer);
var
i: integer;
begin
for i := 0 to <ComboBox>.Items.Count-1 do begin
if (integer(<ComboBox>.Items.Objects[i])=Value) then begin
<ComboBox>.ItemIndex := i;
Exit;
end;
end;
<ComboBox>.ItemIndex := -1;
end;
BTW: Warum nimmst du nicht zwei Tabellen (die Tabelle mit dem ID-Feld hast du schon, fehlt noch die 2. Tabelle mit den Werten für ID und Personalname), einen
Query zur Suche in der 2. Tabelle und einer Ausgabe über ein Label oder ein ReadOnly-Editfeld. Dies könnte viel schneller sein, natürlich abhängig von der Anzahl der Daten.