Пользовательский интерфейс документа с использованием QuantumGrid (TcxGrid) от Developer Express - PullRequest
2 голосов
/ 18 декабря 2009

Мне нужно создать пользовательский интерфейс для ввода торгового документа (например, счета-фактуры). Я пытаюсь использовать компоненты "Developer Express", в частности, компонент QuantumGrid (TcxGrid). Я видел демонстрации компонентов master-detail и поиска в центре поддержки devexpress, но ни один из них не помог мне, потому что все используют 2 сетки для обработки отношения master-detail и редактирования нескольких записей одновременно.

Мне просто нужно редактировать запись (документ) за раз и использовать пару компонентов информационного обеспечения объектов (например, TDBEdit) в заголовке и сетку для обработки деталей.

как то так

alt text

Где найти базовый пример использования этих компонентов таким образом?

Ответы [ 4 ]

1 голос
/ 19 декабря 2009

Свойства Master / Child в QuantumGrid в основном предназначены для размещения нескольких элементов в сетке. Если вы настроите связь в компонентах данных, вы можете просто подключить элементы управления к нужному источнику данных, и все будет работать.

Так что, если у вас есть два DataSets Customer и Invoice. Основной источник данных счета-фактуры является источником данных клиента. Затем в ваших элементах управления редактирования вы указываете на источник данных клиента, а сетку указывает на источник данных счета.

Если вы думаете о том, что делает отношение Master / Detail, то на самом деле просто фильтрует записи в Detail DataSet для соответствия текущей записи в Master DataSet. Отдельные элементы управления Edit всегда отображают «текущую» запись в наборе данных, к которому они подключены. Сетки покажут все видимые записи в наборе данных, к которым они подключены.

У меня есть тенденция не использовать отношения Мастер / Деталь в форме редактирования, как показано здесь. Я предполагаю, что есть какой-то способ на другом экране выбрать счет для редактирования. Я обычно создаю копию необходимых DataSets только с записями, необходимыми для этого редактирования. Если я редактирую существующий счет, я копирую текущие записи. Если это новый счет, я могу начать с пустого набора записей. Это больше работы - у меня есть несколько общих библиотечных функций, которые будут копировать структуру DataSet, а затем копировать одну или несколько записей в этот набор данных. В зависимости от вашей настройки вы также можете запросить вашу базу данных, чтобы просто получить интересующие вас записи. Очевидно, что это следует делать не во всех случаях. Еще одна проблема, связанная с этим подходом, заключается в том, что вам нужен способ обновления любых других наборов данных, которые могут у вас быть, с этими данными, т.е. ваш главный экран поиска.

Однако, как только я попадаю на экран редактирования, я нахожу, что все становится проще. Теперь мне не нужно беспокоиться об отношениях мастер-детали на верхнем уровне. Если в счете-фактуре есть внутренние отношения Мастер / Сведения, вы можете просто справиться с ними, но вы знаете, что в наборах данных есть данные только для этого одного счета - не все в базе данных.

В случае вашей формы, если вы ограничиваете Данные в DataSets, вы можете просто подключить все напрямую, и все должно работать так, как вы ожидаете. У вас будет только одна запись в Customer DataSet, а в счете будет только записи для этого счета.

1 голос
/ 18 декабря 2009

Я думаю, вам нужно позаботиться о связях master-detail в ваших компонентах ClientDataSource. Сетка будет следовать этому соотношению.

0 голосов
/ 22 декабря 2009

Исходная посылка такая же, как и с любыми другими отношениями мастер-деталь, независимо от компонентов. Вам нужно будет настроить основные детали на уровне набора данных, чтобы выполнить то, что вы хотите.

0 голосов
/ 21 декабря 2009

Почему бы вам не спросить об этом по адресу support@devexpress.com?

Причина, по которой у меня подписка на vcl, помимо качества компонентов, конечно, потому что у них отличный сайт поддержки и персонал?

Там вы спрашиваете об этом непосредственно у людей, которые написали материал, и они, скорее всего, с радостью предоставят вам пример программы (по крайней мере, я получил много образцов за эти годы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...