Автор: fortezza
Дата сообщения: 25.05.2011 10:07
wbsg, да вроде не нужен, если совсем уж подробно раскрывать тему:
Есть у меня в таблице поля которые хранят id других таблиц. обычно на них вешают lookupcombobox. Но я хочу реализовать это по-другому. Для этого мне надо три поля: 1 - id, 2 - code (существует не для всех таблиц), 3 - name. В DataSet использую left join чтобы выбрать значения для полей code и name. Пользователь всегда видит только столбец поля name, но может отобразить и скрытые другие поля - id и code (правой кнопкой по столбцу - это первый случай когда нужны ссылки на столбцы). Далее на каждой из трех колонок есть cxButtonEdit при клике на который вызывается форма с фокусом на нужной записи (это второй случай когда нужны ссылки - т.е. на каком поле не щелкнул пользователь передастся значение поля id), выбрав в этом окне нужное значение двойным щелчком форма закрывается и передает 3 соответствующих значения для 3-х столбцов (3 случай кагда нужны ссылки).
Сейчас для меня это очень удобно и по скорости инициализации Grid-а и колонок и по возможностям сортировки и фильтрации (в отличии от lookup), неудобно только по реализации (для этого я пока что использую массивы + функции для их обработки).
Компоненты я ни разу не создавала, и не представляю как это делать для колонок cxGrid, ведь при этом похоже придется переопределить так же сам cxGrid. Поэтому пока интересует вариант без создания компонента. Конкретно код, который я писала выше. Используя такой код и вручную добавляя колонки в грид, у меня например не получается в определенный момент времени определить является ли колонка TcxGridDBMultiColumn или нет (и если да - обратиться к его ссылкам на столбцы), потому что на (Sender is TcxGridDBMultiColumn) всегда выдается false. Не могу сейчас вглублятся в особенности Delphi, может быть конструкцию (... is T...) в моем случае использовать нельзя, а может быть есть другие причины.
Вообщем, слушаю ваши идеи.