Проблема работы Dblookupcombobox под Xe2

отредактировано 08:07 Раздел: FastReport 4.0
Недавно перешел с D7 на XE2.
И тут возникла неприятная ситуация с отчетами.

На диалоговой формы лежат два компонента класса TfrxDBLookupComboBox.
(Всем понятно что TfrxDBLookupComboBox использует стандартный TDBLookupComboBox без указания DataSource и DataField)
У обоих указан один и тот-же DataSet.

Открыва DataSet (читаю данные какой-либо таблицы).
Устанавливаю в коде значения по-умолчанию:
DBLookupComboBox1.KeyValue := 1;
DBLookupComboBox2.KeyValue := 2;

И вот тут возникает проблема из-за кода в исходниках XE2.

При установке значения KeyValue сначала делается поиск этого значения в DataSet`е.
Но в XE2 появился код (Vcl.DBCtrls.pas):
procedure TCustomDBLookupComboBox.ListLinkDataChanged;
begin
{ Fix for Defect# 204311, Non-bound control should clear when list datasource changes }
if (FDataField = nil) and ListActive and (FListDataChanging = 0) and
(FDataList.FListDataChanging = 0) and ListLink.DataSet.BOF then
begin
SetKeyValue(Null);
end;
end;

В результате, после установки DBLookupComboBox2.KeyValue в DBLookupComboBox1.KeyValue будет null.

Как теперь это обойти?

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.