Здравствуйте, VooDoo-KB, Вы писали:
VK>Все бы хорошо, но вот в одном месте кода возникает непонятная ошибка!
На будущее — хорошо бы все-таки объяснять, в чем именно ошибка.
VK>//а дальше 3 варианта и ни один не работает ??? VK>{1 вариант для случая FIELDS_DB:TCOmboBox ???}
Если ты хочешь, чтобы в Fields_DB было поле — оно должно быть типа TField. Имя поля — string.
Начал ты неплохо, но несколько ошибок все же сделал.
1) Полезно иногда смотреть места, где аналогичная задача уже решена. Например, в TDBEdit делается именно что выбор поля из датасета, да и в других db-компонентах — тоже. Исходники VCL доступны.
2) Брать список полей из датасета — плохое решение, поскольку в дизайн-тайме датасет обычно закрыт, и полей у него нет. Дельфа, кстати, тут тоже не очень хорошо работает. Можно — очень аккуратно попытаться открыть датасет, взять имена полей, потом закрыть — но при этом никакой ругани, если открыть не удалось, и должна быть возможность набрать имя поля руками.
3) Есть такая штука — property editors & component editors. Желающему писать компоненты нужно про них знать.
4) Таким образом вряд ли удастся хорошо реализовать идею, лежащую в основе твоего компонента. На самом деле хороший справочник делается не на основе комбобокса и намного сложнее, но по минимуму — нужно делать запрос наподобие select distinct record_id, record_name from records. Датасет не даст тебе информации, которая позволит эффективно использовать твой комбобокс.