pasha |
Отправлено: 26.05.2004, 12:47 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 62
|
Есть на форме таблица Table1 и компонент DBLookupComboBoxEh1
DataSource1 и DBGrid1
При движении по DBLookupComboBoxEh1 изменяется текущая запись в Table1,
а вот при движении по таблице текущая запись в DBLookupComboBoxEh1 остается на месте.
Пытался в событии DataSource1 onDataChange
это дело отследить, но получаю StackOverflow,
причем, если вместо Ehlib-овского DBLookupComboBoxEh
использовать стандартный или RXLib-овский — все нормально
работает.
Прописано все правильно:
ListSource = DataSource1
ListField = Name
KeyField = SpeciesNo
CODE |
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Table->Open();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DataSource1DataChange(TObject *Sender,
TField *Field)
{
//DBLookupComboBoxEh1->KeyValue = TableSpeciesNo->AsInteger; // StackOverflow !!!
DBLookupComboBox1->KeyValue = TableSpeciesNo->AsInteger; // Ok — стандартный
RxDBLookupCombo1->KeyValue = TableSpeciesNo->AsInteger; // Ok — RxLib-овский
}
//---------------------------------------------------------------------------
Как у Вас ??? :( И как это дело исправить ?
|
Отредактировано pasha — 26/05/2004, 14:52 |
|
pasha |
Отправлено: 26.05.2004, 14:14 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 62
|
Задачку эту решил.
Проблема была в циклической ссылке — так как и Grid и DBLookupComboBoxEh работают через один и тот-же
DataSource1, то при наступлении события onDataChange
наступает цикл -
onDataChange от Grid вызывает
onDataChange от DBLookupComboBoxEh вызвает
onDataChange от Grid вызывает
onDataChange от DBLookupComboBoxEh вызвает
...
Хотя и странно, что RxLib-овский и стандартный BCB компоненты
работают нормально.
Решил вот так:
CODE |
void __fastcall TForm1::DataSource1DataChange(TObject *Sender, TField *Field)
{
DataSource1->OnDataChange = NULL; // !!!
DBLookupComboBoxEh1->KeyValue = TableSpeciesNo->AsInteger;
DataSource1->OnDataChange = DataSource1DataChange;
}
//---------------------------------------------------------------------------
|
Отредактировано pasha — 26/05/2004, 16:17 |
|
|