Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Использование DevExpress (часть 4)

Автор: X11
Дата сообщения: 15.03.2012 14:48
Совсем недавно был ответ на Ваш вопрос.

Добавлено:

Цитата:
и в Footor-е группы я понимаю (через OnGetText).


Нет, там же есть свойство Format
Автор: simplecs
Дата сообщения: 16.03.2012 15:44
Здравствуйте! Подскажите пож-ста вот что: есть Cxgrid и в ней можно обратиться к номеру активной записи в подключенной БД, например вот так:
cxGrid1DBTableView1.Controller.FocusedRow.RecordIndex
и есть еще DataSource который тоже содержит набор записей и подключен к таблице.
Так вот когда я стою на первой записи в таблице и хочу получить ее номер, то cxgrid – говорит что ее номер = 0!!! Но в DataSource нет нулевой записи!!! Они идут с первого номера. Почему так? И будут соответствовать мои FocusedRow.RecordIndex записям в БД если я увеличу их значение на единицу, т.е. буду обращаться к активной записи БД как:

cxGrid1DBTableView1.Controller.FocusedRow.RecordIndex +1
Автор: X11
Дата сообщения: 16.03.2012 16:03

Цитата:
cxGrid1DBTableView1.Controller.


Используй Силу DataController, Люк

И вообще, ты путаешь понятия записей в гриде и в наборе данных.

Добавлено:

Цитата:
можно обратиться к номеру активной записи в подключенной БД


Код: I := <TcxGrid1DBTableView>.DataController.DataSource.DataSet.RecNo;
Автор: salexn1
Дата сообщения: 16.03.2012 16:18
simplecs

Цитата:
Но в DataSource нет нулевой записи!!!

а в DataSource вообще нет записей, они есть в DataSet


Цитата:
И будут соответствовать мои FocusedRow.RecordIndex записям в БД если я увеличу их значение на единицу, т.е. буду обращаться к активной записи БД ...


конечно не будут
Автор: neznayka3
Дата сообщения: 16.03.2012 16:34
есть bandview, если в гриде на запись больше одной строки, то при перемещении по ним клавишами, надо пройтись по всем строкам, чтобы перейти на другую запись. если OptionsSelection.CellSelet=false то переход осуществляется сразу, есть другой способ?
Автор: k94kwk1
Дата сообщения: 16.03.2012 17:41
Подскажите пож-ста а можно в Cxgrid оставить вомзможность группировки через Drug&Drop (когда я перетаскиваю столбце в стандартную область группировки вверху), но при этом исключить возможность такого же Drug&Drop по изменению порядка столбцов (когда я беру, у примеру, за 1-ый столбец и делаю его вторым (перетаскивая. А нашел свойство ColumnMoving - но оно отрубает или врубает сразу две эти возможности
Автор: simplecs
Дата сообщения: 16.03.2012 17:51
X11
Я поясню чего я хотел и свое понимание.
Как я понял к записям, которые непосредственно отображаемым в гриде можно обращаться через свойство Index, а еще там есть RecordIndex - который по моему пониманию должен соответствовать записям в DataSet-е. Index можем меняться в результате сортировки, фильтрации и прочей фигни, который делает пользователь.....а вот RecordIndex меняться не может пока я в Datasouse или AdoQuery не изменю запрос или не сделал там фильтрацию или сортировку.
Правильно я понимаю? Поясните Please!

А нужно мне это вот зачем - есть активвная (сфокусированная запись) мне необходимо очистить ряд позиций в ней от данных пользователя. Я нахожу ее RecordIndex через Controller а потом в Dataset-е редактирую запись с этим номером.

[salexn1]
Конечно в Dataset

X11
P.S. Кстати, а почему Вы говорите что «путаешь понятия записей в гриде и в наборе данных»?
Открыл справку по RecordIndex, вижу:
«A record index identifies the position of the current record within a dataset. The Record index is not changed when the visual position of a record within a View is changed. You can access the Index property to determine where the record is displayed within a View.»

Т.е.
«record index определяет положение текущей записи в наборе данных. record index не меняется, когда визуальное положение записи в представлении меняется. Вы можете получить доступ record index, чтобы определить, где запись отображается в представлении»

Т.е. должна соответствовать RecNo DataSet?

Автор: neznayka3
Дата сообщения: 16.03.2012 18:02
как программно закрыть tcxtabsheet? не Hide а когда юзер на кнопку закрытия нажимает?
Автор: marser
Дата сообщения: 16.03.2012 18:30
simplecs

Цитата:
Т.е. должна соответствовать RecNo DataSet?

Соответствует. Непонятно, что Вас смущает? Записи в Grid начинают нумероваться c 0, а в DataSet с 1 (такое часто встречается в программировании). Поэтому DataSet.RecNo = DataController.RecordIndex + 1
Автор: simplecs
Дата сообщения: 16.03.2012 18:43
Ну да тогда ничего не смущает Просто коллега написал выше не то что написали Вы, а
[qoute]
DataController, Люк

И вообще, ты путаешь понятия записей в гриде и в наборе данных.

[/qoute]

Ну я и засомневался
Автор: KAndrew13
Дата сообщения: 16.03.2012 19:01
Подскажите пожалуйста можно ли высчитать процент в футоре для сгруппированных данных формуле
СумариФутер1/СумариФутер2*100 ?
Проблема в том что я не могу получить значение Футеров .
Автор: mdid
Дата сообщения: 16.03.2012 19:50
KAndrew13
а почему не можете? гляньте на события футеров..там прекрасно получаются значения
Автор: k94kwk1
Дата сообщения: 16.03.2012 22:19
Чего-то мой вопрос куда-то уехал и никто не ответил! Поэтому прошу помощи еще раз:

Подскажите пож-ста а можно в Cxgrid оставить возможность группировки через Drug&Drop (когда я перетаскиваю столбце в стандартную область группировки вверху), но при этом исключить возможность такого же Drug&Drop по изменению порядка столбцов (когда я беру, у примеру, за 1-ый столбец и делаю его вторым (перетаскивая. А нашел свойство ColumnMoving - но оно отрубает или врубает сразу две эти возможности
Автор: Lena44
Дата сообщения: 17.03.2012 21:36
У TMS грида есть удобный метод сохранения его содержимого в excel файл. Подскажите, пожалуйста, как содержимое cxGrid1(cxGrid1DBTableView1) сохранить в файл?
Автор: Corsairs
Дата сообщения: 17.03.2012 22:02
Lena44
В раздел Uses надо добавить cxGridExportLink
и
Код: ExportGridToExcel('filiname.xls',cxGrid1,True,True,True,'xls');
Автор: Lena44
Дата сообщения: 17.03.2012 22:30

Цитата:
Corsairs


СПАСИБО!
Автор: andreybear
Дата сообщения: 19.03.2012 06:57
Необходимо производить расчет по формуле для определенных столбцов таблицы.
Каким образом и когда (при каком событии) лучше присваивать рассчитанные значения в соответствующие ячейки? onGetDataText и onGetDisplayText не подходят, т.к. заменяют только отображающийся текст, а необходимо изменять сами значения, потому что, если выделить ячейку, то в ней отображается текущее значение.
Автор: mdid
Дата сообщения: 19.03.2012 08:50
andreybear
ну раз это конечный результат..то сделайте невозможным редактировать эту колонку
Автор: dimm78
Дата сообщения: 19.03.2012 09:03

Цитата:
Необходимо производить расчет по формуле для определенных столбцов таблицы.
Каким образом и когда (при каком событии) лучше присваивать рассчитанные значения в соответствующие ячейки? onGetDataText и onGetDisplayText не подходят, т.к. заменяют только отображающийся текст, а необходимо изменять сами значения, потому что, если выделить ячейку, то в ней отображается текущее значение.


Может быть обрабатывать событие OnCalcFields у DataSet а в грид выводить уже рассчитанные значения?
Автор: andreybear
Дата сообщения: 19.03.2012 09:13
mdid
Если значение колонки рассчитывается по предыдущей строке, то надо дать возможность пользователю ввести начальное значение при добавлении первой записи. Да, и рассчитанные значения необходимо хранить в БД, т.к. могут использоваться при расчете в других таблицах.
dimm78
cxGrid в unbound mode, так что к DataSet не привязана.
Автор: Czechoslovak
Дата сообщения: 19.03.2012 09:52

Цитата:
Да, и рассчитанные значения необходимо хранить в БД


Цитата:
cxGrid в unbound mode, так что к DataSet не привязана.

andreybear
Ты уж определись с базой ты работаешь или без базы!.... А вообще это твоя "головная боль", ни кто за тебя писать программу не будет, подсказать ДА! но не давать готовый алгоритм!
Автор: andreybear
Дата сообщения: 19.03.2012 10:06
Czechoslovak

Цитата:
Ты уж определись с базой ты работаешь или без базы!....

Последовал вашему совету и определился - таблица не привязана к наборам данных, но данные хранятся в БД.
Честно говоря, смысл вашего высказывания не понятен: готовый алгоритм я не просил, да и подсказку вы не дали! В общем, Czechoslovak, можете помочь, помогите советом, пожалуйста, нет - спасибо за совет о необходимости писать программы собственноручно! Обязательно им воспользуюсь!
Автор: Czechoslovak
Дата сообщения: 19.03.2012 10:38
andreybear
Ну может чутка по горячился, извини....Посоветовать ни чего не могу так как мне не совсем понятна твоя проблема!
Автор: mdid
Дата сообщения: 19.03.2012 10:39
andreybear
погодите..а что вы используете DB TableView или просто TableView? просто при TableView таких проблем вообще не должно быть
Автор: andreybear
Дата сообщения: 19.03.2012 10:56
mdid
TcxGridBandedTableView. Заполняю таблицу, отслеживаю изменения и сохраняю "сам".
На некоторые колонки определены формулы, согласно которым должны рассчитываться значения для соответствующих ячеек. Проблема в том, что не могу определить, когда писать "вычисленные" данные в эти ячейки. onGetDataText прекрасно работает, только пишет отображаемый текст, а значения остаются прежними.((
Автор: mdid
Дата сообщения: 19.03.2012 11:12
andreybear
та драсте..ну это ж просто...я конечно всей сути не знаю но алгоритм таков...цепляетесь к событию OnValidate этой колонки где будет лежать процедура расчета и выводить результат в EditValue а не через onGetDataText ....Тип колонки храните в другой невидимой колонке(допустим 0 - значение которое суммируется а 1 - результат) ..ну как то так
Автор: Czechoslovak
Дата сообщения: 19.03.2012 11:15
andreybear
Так а что .EditValue нельзя присвоить значение что ли?
Автор: DimonXP
Дата сообщения: 19.03.2012 11:43
Всем привет.

Установил новые DevExpress 2011.2.4.

Открываю старый проект с layoutcontrol. При открытие формы в IDE (Delphi 7) сообщение "a call to an OS function failed", и так каждый раз при смене окна.

Кто нибудь сталкивался?
Автор: andreybear
Дата сообщения: 19.03.2012 11:47
mdid

Цитата:
та драсте..ну это ж просто...я конечно всей сути не знаю но алгоритм таков...цепляетесь к событию OnValidate этой колонки где будет лежать процедура расчета и выводить результат в EditValue а не через onGetDataText

Может я чего-то не правильно понял, но как произойдет событие onValidate, если значения для колонки рассчитываются, а не вводятся пользователем?
Czechoslovak
Показать редактор колонки, присвоить туда значение, затем скрыть?
Автор: mdid
Дата сообщения: 19.03.2012 11:56
DimonXP
ПК перезагружали?
andreybear
давайте начнем с того является ли каждое поле одновременно результатом суммы и суммируемым? onValidate не произойдет...но произойдет OnChange(пропертис только выбрать надо)если просуммировать поля 1+2+3=6 то зачем вызывать onValidate для поля где результат 6? + у вас интересный подход...усер поменял 6 на 100 и получается 1+2+3=100?
ПС
или мне мало данных для совета или уже я чего то не понимаю

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

Предыдущая тема: Помогите пожалуйста с блокировкой клавиатуры и мышки


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.