Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Базы данных, репортинг, печать > Подмена данных в визуальных DB компонентах |
Автор: Vit 13.02.04, 14:04 |
у всех TField существует свойство DisplayText которое используется всеми визуальными компонентами чувствительными к данным (DataAware), в том числе и TDBGrid'ом. Т.е. TDBGrid выводит именно это свойство. В свою очередь, значение этого свойства по умолчанию равно значению из поля БД, с учетом свойства DisplayFormat (у кого оно есть). Но это по умолчанию. Реально-же, у всех TField есть событие OnGetText. Если оно определено для поля, то DisplayText этого поля будет возвращать то, что вернет OnGetText. Словами слишком запутанно , проще на примере: Если поля созданы в дизайнере, то требуемому полю (например FFF) вешаем обработчик FFFOnGetText событию OnGetText. Если-же поля создаются динамически, то соответственно вешаем обработчик динамически. Пример обработчика: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> procedure FFFOnGetText (Sender: TField; var Text: String; DisplayText: Boolean); begin if DisplayText then Text := AnsiUpperCase(Text); end; С таким обработчиком, в поле FFF DBGrid'а, все символы будут заглавными, вне зависимости какие они в БД. Естественно в БД они не меняются. При этом возникает интересный эффект. Если вы начнете редактировать поле FFF, то оно приобретет вид такой как в БД , до тех пор пока Вы не закончите редактирование. Естественно это работает и для TDBEdit и пр. Этот способ удобно применять когда нужно выполнить только текстовое преобразование для отображения значения поля. Автор: Петрович |