Witam.

Problem wygląda tak:

W tabeli z fakturami VAT występuje pole 'nazwa' okręślające nazwę kontrahenta, na którego zostanie wystawiona faktura.

DBGrid ma ustawioną opjcę RowSelect na True. Wszelka edycja danych w tabeli faktur ma się odbywać poprzez inne kontrolki.

Pole 'typ_dokumentu' w tabeli faktury ma tylko 4 mżliwe wartości: 'Oryginał', 'Oryginał/Kopia', 'Kopia', 'Duplikat'.

Chciałem uzyskać taki efekt, aby podczas przeglądania rekordów w jednej z kontrolek typu ComboBox (DBCombo, DBLookup, ComboBox) wyświetlały się aktualne wartości pola 'typ_dokumentu'. Można to oczywiście zrobić stosując DBComboBox i przypisując odpowiednie pole, ale wtedy mam na liście tylko aktualne pole i gdy chcę wybrać inne z listy, to jest ona pusta. Dodatkowo można wpisać tu to, co się chce, a mi zależy na ograniczeniu wprowadzania danych tylko do tych 4 wartości. Rozwiązałem problem używając zwykłego ComboBoxa, wypełniając jego 'Items' podanymi wyżej wartościami i używając poniższego kodu:

procedure Tfaktury_form.faktury_tableAfterScroll(DataSet: TDataSet);
begin
if (faktury_table.FieldByName('DOKUMENT').Value='Oryginał/Kopia') then
doc_combo.ItemIndex:=0;
if (faktury_table.FieldByName('DOKUMENT').Value='Oryginał') then
doc_combo.ItemIndex:=1;
if (faktury_table.FieldByName('DOKUMENT').Value='Kopia') then
doc_combo.ItemIndex:=2;
if (faktury_table.FieldByName('DOKUMENT').Value='Duplikat') then
doc_combo.ItemIndex:=3;
end;

Ten sam efekt, czyli listę dostępnych wartości + uniemożliwienie wpisywania do listy własnych pozycji chciałbym uzyskać z polem 'nabywca' jednak powyższy kod nie będzie funkcjonalny w tym przypadku, gdyż kontrahentów będzie przybywać.

Pomysł mam taki, aby zwykłego ComboBoxa najpierw wypełnić wszystkimi nazwami kontrahentów z tabeli, ustawić go na DropDownList a potem... no właśnie potem przydałoby się w zdarzeniu 'AfterScroll' wpisać odpowiedni kod, który ustawi Index tego ComboBoxa tak, aby wyświetlał odpowiednią nazwę...

Macie jakieś sugestie jak to rozwiązać ?