Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
02-10-2009 06:40
Ваша DBDridEh связана с каким-то набором данных. Если вы связывали ее в режиме проектирования, то в свойство DataSource вы помещали ссылку на компонент типа TDataSource, а в свойство DataSet этого компонента ссылку на ваш набор данных, который вы хотите отображать в сетке. Это может быть компонент типа TQuery, TTable, TADOQuery и т.д. Если вы дважды щелкните на этом компоненте набора данных, то выскочит окошко, в котором содержится список полей. Но вначале это окошко пустое. Там есть кнопочки, с помощью которых можно добавлять поля. Обычно вначале добавляют все поля с исходными данными (Add All), а затем вычисляемые и Lookup поля, если такие нужны. После того, как список сформирован, можно выделять каждое поле и менять его свойства. Вас интересует свойство DisplayLabel. Это свойство содержит название колонки, которое будет отображено в гриде. То есть поле в наборе может имет имя, например, "Comment". А в DisplayLabel вы вписываете "Комментарий". И получаете в гриде колонку с названием "Комментарий". Это все справедливо для любой TDBGrid. Для TDBGridEh же можно вписывать сюда многоуровневые заголовки и получать сложные заголовки.
Другой способ - щелкнуть на кнопочке в свойстве Columns вашей DBGridEh. Выскочит такое же окошко, куда вы сможете добавить все колонки вашего грида, а затем, выделяя их по очереди, открывать свойство Title, внутри которого есть подсвойство Caption. Меняя это свойство таким же образом, вы добиваетесь того же эффекта.
В простейшем случае оба подхода эквивалентны. Если вы сделаете и то, и другое, то будет отображаться то, что вы ввели в Columns. Но второй способ не подходит, если вы планируете отображать в одном и том же гриде разные наборы данных, переключаясь между ними в процессе работы программы. Имеется в виду, что эти наборы могут содержать отличающийся друг от друга набор полей. А первый подход и в этом случае прекрасно работает.
1. Ставите UseMultiTitle в true.
2. Для всех многоуровневых столбцов вписываете либо DisplayLabel соответствующего поля набора данных, либо Title.Caption колонки грида (смотря что вы применяете) по следующему принципу: Уровень0|Уровень1|... и т.д. Естественно, УровеньN для всех столбцов, объединенным под этим заголовком, должен быть одинаковым.
То есть, если надо сверху написать: "Друзья", а под этим словом: "Вася" и "Петя", то можете задать:
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.