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

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

Автор: brookson
Дата сообщения: 27.10.2010 13:03
Работает вот так

Код: Append;
cxgrid.setfocus;
tvAbontype.Controller.FocusedItem:=tvAbontypeNAME;
Автор: Man_Without_Face
Дата сообщения: 28.10.2010 09:51
Доброго времени суток. Есть компоненты: cxGrid, DataSourse, ClientDataSet, frxDBDataSet, frxReport. Сортирую или фильтрую грид. Как отфильтрованные и отсортированные данные загрузить в фастрепорт?
Автор: linker_2009
Дата сообщения: 28.10.2010 10:09
Man_Without_Face
Было 2-3 страницами раньше, применить фильтр на DataSet
Автор: Man_Without_Face
Дата сообщения: 28.10.2010 10:14
linker_2009
это я и писал, теперь так не катит + сортировка нужна...


Добавлено:
X11
Пытаюсь подключить ваш класс TcxGridToMemTable,
но не понимаю где взять dxMemData. Это я так понимаю компонент (датасет). У меня его нету.
Автор: f3ka
Дата сообщения: 28.10.2010 10:50
Man_Without_Face
dxMemData входит в пакет DevExpress
Автор: Man_Without_Face
Дата сообщения: 28.10.2010 11:08
f3ka
Ок, спс нашел, установил (почему сразу не стоял не понятно).
X11
При создании полей:
TcxGridToMemTable.Create(cxGridOXDBTableView1, dxMDox);
cxGridToMemTable.CreateFields; //Здесь аксесс виолейшн.
cxGridToMemTable.LoadData(False);
В чем может быть причина? Я так понимаю в самом мемдатасете поля создавать не надо?



Добавлено:
Delphi 2007, DevExpress 52
Автор: X11
Дата сообщения: 28.10.2010 11:15

Цитата:
cxGridToMemTable.CreateFields; //Здесь аксесс виолейшн.

посмотри код, на какой именно строчке вываливает AV?
Автор: Man_Without_Face
Дата сообщения: 28.10.2010 11:31
X11

Цитата:
посмотри код, на какой именно строчке вываливает AV?

fMemData.close;

Мог ли я неправильно установить компонент, даже если он появился?



Добавлено:
Такого даже нету!
dxmdaset.close;
dxmdaset.open;

Добавлено:
билд:
dxmdsRS11.bpl
dxmdsD11.bpl
инсталл:
dcldxmdsRS11.bpl - появился компонент
dcldxmdsD11.bpl - ошибка:
Cannot load package 'dxCoreD11.' It contains unit 'dxCore, 'which is also contained in package 'dx CoreRS11'

Это вроде бы уже все стоит, ставлю еще раз (dxCoreD11):
билд: cxCoreD11.bpl
инсталл: dclDxCoreD11.bpl - Cannot load package 'dxCoreD11.' It contains unit 'dxCore, 'which is also contained in package 'dx CoreRS11'

билд: dxCoreRS11.bpl - [DCC Error] F2039 Could not create output file 'C:\Documents and Settings\All Users\Документы\RAD Studio\5.0\Bpl\dxCoreRS11.bpl'
Автор: X11
Дата сообщения: 28.10.2010 11:57

Цитата:
Такого даже нету!

Не понял, чего именно нету?

этой процедуры нету?

Код: procedure TcxGridToMemTable.CreateFields();
Автор: Man_Without_Face
Дата сообщения: 28.10.2010 12:24
X11
Пробовал класс под ClientDataSet переделать, дошел до сюда:
dxCharInSet(AName[1], ['0'..'9'])
понятия не имею какую функцию сюда вставлять и где ее взять...
Автор: f3ka
Дата сообщения: 28.10.2010 12:32
Man_Without_Face
ну ведь из названия понятно что проверяется принадлежность Parametr1 множеству Parametr2... можно свою написать такую же процедуру...
Автор: marser
Дата сообщения: 28.10.2010 12:40
Man_Without_Face
А TfrxUserDataSet не подходит для твоих целей?
TfrxUserDataSet предназначен для печати массивов, а грид и есть двухмерный массив.
Автор: linker_2009
Дата сообщения: 28.10.2010 12:48
X11

Цитата:
Мой класс работает с TDataSet, по идее все наследники TDataSet должны работать нормально.

Тот что ты выкладывал здесь работает только с TdxMemData. Если правил, перевыложи пожалуйста.
Автор: X11
Дата сообщения: 28.10.2010 12:52
linker_2009, аааа, точно-точно, я уже и забыл. Давно не смотрел тот код. Просто была мысль сделать под TDataSet, но за ненадобностью забросил и забыл. Может у кого будет время переработать класс для TDataSet...
Если у меня появится время и потребность, то придётся переделывать.
Автор: Man_Without_Face
Дата сообщения: 28.10.2010 12:53
marser

Цитата:
А TfrxUserDataSet не подходит для твоих целей?

Может и подходит, но как его с гридом связать, в нем настроек минимум. А писать громадную процедуру я не потяну.

Автор: linker_2009
Дата сообщения: 28.10.2010 12:56
X11
А что юзаешь взамен? Мне не к спеху, вот через месяцок припрет, сам уж переделаю)
Автор: X11
Дата сообщения: 28.10.2010 12:59
В моём классе есть от dxMemData только 2 функции:
GetValidName
и
dxCharInSet

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

Добавлено:

Цитата:
X11
А что юзаешь взамен? Мне не к спеху, вот через месяцок припрет, сам уж переделаю)

Ничего, меня пока dxMemData устраивает.
Автор: marser
Дата сообщения: 28.10.2010 13:18
Man_Without_Face

Цитата:
Может и подходит, но как его с гридом связать, в нем настроек минимум. А писать громадную процедуру я не потяну.

Там только нужно обработать событие OnGetValue. В Demos есть пример PrintArray.
Автор: fortezza
Дата сообщения: 28.10.2010 14:51
Здравствуйте, подскажите пожалуйста, какое событие воникает, когда я выхожу из режима редактирования для cxGrid или для cxGridView? т.е. в ячейке не мигает курсор
Автор: f3ka
Дата сообщения: 28.10.2010 14:52
fortezza
OnEditValueChanged?
Автор: X11
Дата сообщения: 28.10.2010 15:10
Нужно получить в cxGrid FocusedRecord, т.е. выбранную запись.

Это правильный код или есть более "умный"?

Код: Var
AFocusedRecord: TcxCustomGridRecord;
begin
AFocusedRecord := dbgClients.ViewData.Records[dbgClients.DataController.FocusedRecordIndex];
Автор: fortezza
Дата сообщения: 28.10.2010 15:37

Цитата:
fortezza
OnEditValueChanged?

неа

Автор: f3ka
Дата сообщения: 28.10.2010 15:40
fortezza
а ты поставь Properties.ImmediatePost = True
Автор: Man_Without_Face
Дата сообщения: 28.10.2010 16:02
marser

Цитата:
Там только нужно обработать событие OnGetValue. В Demos есть пример PrintArray.


Все равно не получается:
procedure TForm1.cxButton1Click(Sender: TObject);
var cxGridToMemTable: TcxGridToMemTable;
begin
frxReport1.Clear;
frxUserDataSet1.RangeEnd := reCount;
frxUserDataSet1.RangeEndCount := cxGrid1DBTableView1.DataController.RecordCount;
frxReport1.ShowReport;
end;

procedure TForm1.frxReport1GetValue(const VarName: string; var Value: Variant);
begin
cxGrid1DBTableView1.DataController.FocusedRecordIndex:=frxUserDataSet1.RecNo;
if CompareText(VarName, 'AL') = 0 then
Value := ???
end;

Может есть у кого нибудь наглядный пример с cxGrid?
Автор: marser
Дата сообщения: 28.10.2010 16:42
Man_Without_Face

Цитата:
Может есть у кого нибудь наглядный пример с cxGrid?

Примера у меня нет, т.к. я этого не делал. Но я думаю, что приблизительно должно выглядить так (писал не в IDE, поэтому возможны ошибки в синтаксисе):

Код: procedure TForm1.cxButton1Click(Sender: TObject);
var cxGridToMemTable: TcxGridToMemTable;
begin
frxReport1.Clear;
frxUserDataSet1.RangeEnd := reLast;
frxUserDataSet1.RangeEndCount := cxGrid1DBTableView1.DataController.FilteredRecordCount;
frxReport1.ShowReport;
end;

procedure TForm1.frxReport1GetValue(const VarName: string; var Value: Variant);
begin
if CompareText(VarName, 'AL') = 0 then
with cxGrid1DBTableView1.DataController do
Value := Values(GetRowInfo(frxUserDataSet1.RecNo).RecordIndex, <ColumnAL>.Index);
// <ColumAL> - Колонка (TcxGridDBColumn) которая соответсвует переменной 'AL'
end;
Автор: George_Lucky
Дата сообщения: 29.10.2010 07:27
Подскажите решение, как устранить следующую проблему:
В гриде используются ExtLookupComboBox.
Привязка по Id, отображается в гриде колонка, скажем, Name.
При сортировке в данной колонке (кликнув по заголовку)
сортировка осуществляется по Id!!! вместо Name
соответственно вместо порядка видим полную разносортицу
Как устранить данный казус
версия девок - 53
Lookup конечно поможет в данной ситуации, но необходим Ext
Спасибо
Автор: marser
Дата сообщения: 29.10.2010 07:54
George_Lucky
У колонки есть свойство Options.SortByDisplayText := True или у грида DataController.Options := [dsoSortByDisplayText]

Автор: fortezza
Дата сообщения: 29.10.2010 09:27

Цитата:
fortezza
а ты поставь Properties.ImmediatePost = True
зачем? ведь ячейка становится неактивной так или иначе какое-то событие для этого есть.. или нет?
включить ImmediatePost для меня плохой вариант
Автор: serbr
Дата сообщения: 29.10.2010 09:49
Здравствуйте! Можно ли скопировать созданный view в cxgridе и вставить его в этот же грид или другой?
Заранее спасибо.
Автор: marser
Дата сообщения: 29.10.2010 09:58
serbr
Цитата:
Можно ли скопировать созданный view в cxgridе и вставить его в этот же грид или другой?
Думаю, что нет. Только ручной правкой модулей dfm и pas.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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