1. Я не увидел вызова вашей процедуры Fill, поэтому трудно сказать в чем проблема.
2. Вот тут вы чего-то мудрите:
Код:
procedure TFillCombo.Setfset(Val: TpFIBDataSet);
begin
fset :=TpFIBDataSet.Create(nil);
fset:=Val;
end;
Вы создаете экземпляр fset, а затем благополучно подменяете его другим.
При такой реализации смысла в этой процедуре нет никакого.