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

» Использование DevExpress 2

Автор: Slava15
Дата сообщения: 30.06.2008 10:56
xokc

Большое спасибо, разобрался!
Автор: DmitryZzz
Дата сообщения: 30.06.2008 15:46
Уважаемые, прошу совета! Вопрос по cxgrid 6й версии.
Нужно получить датасет набора записей, которые отображаются на экране, то есть отфильтрованные, отсортированные итп.
НО!!! нельзя использовать GridView.DataController.Filter.AutoDatasetFilter = true

Либо посоветуйте как эти данные (отфильтрованные, отсортированные итп) без включения этой опции сохранить максимально похоже в Excel
Спасибо.
Автор: shulum
Дата сообщения: 30.06.2008 16:08
DmitryZzz
функция ExportGridToExcel тебе поможет ...
в uses подключи cxGridExportLink
Автор: DmitryZzz
Дата сообщения: 30.06.2008 16:49

Цитата:
функция ExportGridToExcel тебе поможет ...
в uses подключи cxGridExportLink

Как запасной вариант подойдет, но я забыл уточнить - без создания собственно файла Excel.
Сейчас я из датасета сам открываю эксель и пишу в него. Пользователю пригодилось - он сам сохранил. Но выгружаются все записи из грида
Вариант штатного экспорта работает как надо, но пишет в существующий файл
Автор: greyserg
Дата сообщения: 30.06.2008 17:16
Подскажите пожалуйста как в ExpressQuantumGrid сделать кнопку в cell для определенной колонки.
Можно ли сделать такое ?
Автор: shulum
Дата сообщения: 30.06.2008 18:10
DmitryZzz

Цитата:
Но выгружаются все записи из грида

Из грида или датасета?
Что-то подсказывает мне, что именно из датасета, а вот если перебрать данные самого грида, то все завертится и закрутится как надо
попробуй использовать не DataController, а Controller
TcxGridDBTableView.Controller


Цитата:
Вариант штатного экспорта работает как надо, но пишет в существующий файл

А что мешает явно указать в какой файл писать? ну, например, спросить у пользователя куда сохранить ...? ну или, например, проверить наличие такого файла и что бы не затерать его, сменить ему имя перед тем как начать новый экспорт?

Автор: ply
Дата сообщения: 30.06.2008 20:05
использую CalcEdit для редактирования колонки
в событии Properties.OnEditValueChanged пишу
showmessage(floattostr(itemsprice.EditValue))

Но показывает предыдущее значение ячейки...
Как узнать новое значение? C обычным cxCalcEdit (не в гриде) все ОК
Автор: xokc
Дата сообщения: 30.06.2008 20:43
ply
procedure TYour_Form.Your_ColumnPropertiesEditValueChanged(
Sender: TObject);
var
Edit: TcxCustomEdit;
NewValue: Variant;
begin
Edit := Sender as TcxCustomEdit;
NewValue := Edit.EditingValue;
// Your other code is here...
end;

подробнее см.
hччp://www.devexpress.com/Support/Center/KB/p/A571.aspx?
searchtext=EditingValue&tid=dee0f498-9b49-42c9-bee9-5530e0ea67f6&pid=763242d1-7120-4037-9b89-a96d16d00bef
Автор: DmitryZzz
Дата сообщения: 01.07.2008 07:52
shulum

Цитата:
что именно из датасета

точно

Цитата:
перебрать данные самого грида

только у .Controller нету Dataset, то есть надо будет перебирать все колонки и ячейки как визаульные контролы итп.

Цитата:
А что мешает явно указать в какой файл писать? ну, например, спросить у пользователя куда сохранить ...? ну или, например, проверить наличие такого файла и что бы не затерать его, сменить ему имя перед тем как начать новый экспорт?

Да все нормально, так и сделал. Просто считаю более правильным не создавать никаких файлов, пока пользователь явно этого не захочет. То есть экспорт грида в Excel - открывается программа Excel (или если уже открыт - новый лист создается, или в зависимости от пожеланий - в существующий лист), пишется туда грид. Если пользователю визуальный результат нравится - он и сохранит *куда ему надо*. Или не сохранит.

Автор: shulum
Дата сообщения: 01.07.2008 11:31
DmitryZzz

Цитата:
Если пользователю визуальный результат нравится - он и сохранит *куда ему надо*. Или не сохранит.


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


Цитата:
только у .Controller нету Dataset, то есть надо будет перебирать все колонки и ячейки как визаульные контролы итп.

ну тут как говорится .. хочешь жить - умей вертеться ...

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

Автор: Yuran7
Дата сообщения: 01.07.2008 16:46
Разбираюсь с ExpressQuantumGrid 6 а именно DragDropDemo. Возник такой вопрос по этому примеру:
почему при удалении записи(фильма) из таблицы Films, которая редактируется из вкладки Films, размещённой на форме DragDropDemoDictionariesForm не удаляется полностью запись из таблицы FILMSGENRES(размещена на форме DragDropDemoMainForm), а только стирается поле FILMID, а поле GENREID не удаляется.
Как можно при удалении записи из таблицы Films, удалить полностью запись из таблицы FILMSGENRES, ID которой равно удаляемому ID из таблицы Films?
Автор: kii
Дата сообщения: 01.07.2008 17:23
Уважаемые!
Кто-нибудь пытался состыковать в QGrid'е фильтрованный DBView и на другом уровне DBChart , чтобы отфильтрованные данные отображались на графике?
Автор: StdNet
Дата сообщения: 01.07.2008 19:37
Подскажите как в гриде сделать что бы если ширига столбца была, например 50 пикселей, и если текст не влазит то текст переносился на две или три строки, так же надо сделать и с заголовком столбца(т.е. если он не влазит то автоматически переносился текст и СТРОКА сама становилась шире)
Автор: sldaac
Дата сообщения: 01.07.2008 22:37

Цитата:
StdNet

OptionView FooterAutiHeigt HeaderAutoHigh CollumAutowidth
посмотри здесь
Автор: ply
Дата сообщения: 01.07.2008 22:44
xokc спасибо

подскажите как в CustomDrawCell узнать значение другой ячейки в этой же строке?

Делаю так:
AViewInfo.RecordViewInfo.GetCellViewInfoByItem(itemsservprod_type).Value;
работает, но если сделать группировку по любой не относящейся к делу колонке, то выдает ошибку.

если так
sender.datacontroller.Values[AViewInfo.GridRecord.Index, itemsservprod_type.index]
или так
AViewInfo.GridRecord.Values[itemsservprod_type.index]
то тоже самое, только ошибка звучит как "Record Index out of Range"
Автор: afiget
Дата сообщения: 02.07.2008 18:06
ply
Попробуйте GetColumnByFieldName.
Автор: xokc
Дата сообщения: 02.07.2008 19:52
ply
см. Help по QuantumGrid, ключевое слово - Records. Там объясняется, что такое Records и чем они отличаются от Rows.
И еще
hччp://www.devexpress.com/Support/Center/p/Q32378.aspx?
searchtext=group+values&tid=dee0f498-9b49-42c9-bee9-5530e0ea67f6&pid=763242d1-7120-4037-9b89-a96d16d00bef
А также
hччp://www.devexpress.com/Support/Center/p/Q99120.aspx?
searchtext=group+values&tid=dee0f498-9b49-42c9-bee9-5530e0ea67f6&pid=763242d1-7120-4037-9b89-a96d16d00bef

Ну а если коротко, то работать надо не через Records, а через Rows.
Дома Delphi нет - работающего кода написать не могу.
Автор: ply
Дата сообщения: 02.07.2008 22:34
xokc ясно.

Замутил такую штуку, чтобы вытащить значение через Row
sender.DataController.GetRowValue(sender.DataController.GetRowInfo(
sender.DataController.GetRowIndexByRecordIndex(aviewinfo.GridRecord.RecordIndex,false)),itemsservprod_type.index);
тоже выдает "out of range"

напишите плиз как это по уму сделать=)
Автор: sldaac
Дата сообщения: 03.07.2008 01:26
Есть две табл, связаных, мастер-детал, и
есть два Грида, в которых у каждого есть
TcxGridDBColumn -> CheckBox

Как сделать, что-бы при чеке в гриде-мастер (подкл к табл мастер), в другом гриде, подключ к табд Детайл то-же почекались все строки в CheckBox. Проитись по записям таблицы как сделать знаю, не очень удобно.
Спсб.
Автор: golkanavt
Дата сообщения: 03.07.2008 10:34
sldaac
Данные в гриде из базы? Где располагается логика реакции на выставление галки у родительской записи? Если в базе, то на клиенте требуется только обновить сетку, если на клиенте - тогда ходить по дочерним записям
Автор: afiget
Дата сообщения: 03.07.2008 11:25

Цитата:
Проитись по записям таблицы как сделать знаю, не очень удобно.

Именно так и надо делать, если у логика реализована на клиенте. И не check анализировать, а значение в таблице, к которой прикручен грид. Используется для этого специально предназначенное событие поля OnChange.
Автор: sldaac
Дата сообщения: 03.07.2008 11:34

Цитата:
Именно так и надо делать, если у логика реализована на клиенте. И не check анализировать, а значение в таблице, к которой прикручен грид. Используется для этого специально предназначенное событие поля OnChange.


Спсб все отликнувшимся
По записям это и сделано, не очень красиво, чекнул Мастер табли и пошел чекать детайл-табо, пока чекается скролинг в гриде бегает, даже DisableControl не помогает
Автор: Yuran7
Дата сообщения: 03.07.2008 11:57
Есть таблица QuantumGrid 6
Нужно, что бы после редактирования строки в поле ДАТА этой же строки записывалась текущая дата и время. Спасибо.
Автор: greenpc
Дата сообщения: 03.07.2008 13:10
Yuran7

Цитата:
Есть таблица QuantumGrid 6

какой тип таблицы ? БД или текст мы же не телепаты
Автор: Yuran7
Дата сообщения: 03.07.2008 13:45

Цитата:
какой тип таблицы ? БД или текст мы же не телепаты

компонент TcxGride, в нём есть уровень TcxGridLevel1 в котором имеется TcxGridDBTableView
БД - Paradox.
Автор: X11
Дата сообщения: 03.07.2008 13:57

Цитата:
Есть таблица QuantumGrid 6
Нужно, что бы после редактирования строки в поле ДАТА этой же строки записывалась текущая дата и время. Спасибо.

Ты расскажи, как ТЫ делаешь, что именно не получается. А мы тебя поправим.
Автор: Yuran7
Дата сообщения: 03.07.2008 15:56

Цитата:
Ты расскажи, как ТЫ делаешь, что именно не получается. А мы тебя поправим.

Вопрос в том, что я не знаю, как это можно реализовать. Меня интересует можно ли это реализовать средствами грида? Если нельзя, то как можно это сделать с помощью запросов, и если не трудно, можно привести пример. Спасибо.
Автор: xokc
Дата сообщения: 03.07.2008 19:35
ply

Цитата:
sender.DataController.GetRowValue(sender.DataController.GetRowInfo(
sender.DataController.GetRowIndexByRecordIndex(aviewinfo.GridRecord.RecordIndex,false)),itemsservprod_type.index);
тоже выдает "out of range"

Вспомнил, блин. Скорее всего у тебя out of range генерится при попытке отрисовки строки группировки, т.к. у нее нет колонки с тем именем, которое тебе надо. Выход - в OnCustomDrawCell проверять не находится ли рисуемая ячейка строка в строке группировки.
Автор: greenpc
Дата сообщения: 04.07.2008 06:25
Yuran7

Цитата:
после редактирования строки.. БД - Paradox

так пусть этим занимается БД
свойство AfterPost в DataSet'e
а если то что редактируешь запоминаешь через update, то в нем.
Автор: Yuran7
Дата сообщения: 04.07.2008 10:52
Пробую так - работает. Но я хочу узнать, правильно ли так делать?Если нет, то как есть правильно?
procedure TDragDropDemoMainDM.tblFilmsDictBeforePost(DataSet: TDataSet);
begin
DragDropDemoMainDM.tblFilmsDict.FieldByName('TIME').AsDateTime := now;
end;

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

Предыдущая тема: Язык программирования на русском языке


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