Aleksandr.Popkov
1. Немного доработал данный пример, т.к. не очень удобный. К сожалению проблему с исчезновением курсора решить не получиться, но теперь при поиске, вы можете нажать стрелку вниз, чтобы сразу начать выбор вариантов в ComboBox во время поиска, также можно нажать Esc, чтобы отменить поиск. (проект приложил к сообщению)
2. В случае создания обязательного внешнего ключа (для ComboBox), необходимо указать идентификатор записи по умолчанию, который присвоится для существующих записей, где данный внешний ключ не имеет значения. Например вы можете в словаре услуг создать название услуги как "Не определена", затем идентификатор этой новой записи использовать как значение по умолчанию.
Либо можно написать небольшой скрипт, который не позволит при создании/редактировании записи сохранить ее без указания Услуги, например так:
Создайте событие OnClick для кнопки "Сохранить запись"
procedure frmAbonent_Button6_OnClick (Sender: string; var Cancel: boolean);
begin
if frmAbonent.cbService.dbItemID = -1 then
begin
ShowMessage('Выберите услугу.');
Cancel := True;
end;
end;