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

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

Автор: DShtorm
Дата сообщения: 04.06.2010 15:16

Цитата:
Непонятно может быть в шедулере несколько тысяч строк ?


Цитата:
Может, сможет ли пользователь воспринимать информацию?

Не сможет ))) , проверял создавая в рунтайме , минут 15 прога висела ,
грузя процессор , потом выключил .
Решил создавать строк столько сколько видно в гриде и на лету заполнять
их событиями .


Автор: unikum
Дата сообщения: 04.06.2010 16:53
Как прикрутить черную тему к риббону у dxComponentPrinter? А то получается, что у приложения черная тема, а у превью окна голубая (по умолчанию).
Автор: linker_2009
Дата сообщения: 04.06.2010 16:54
[b]DShtorm[/b]
У меня из БД нормально отображает около 3500 записей. как вы делает я не знаю ))
Автор: DShtorm
Дата сообщения: 05.06.2010 20:59
linker_2009
делал так
while not dm.DataModule1.dsetCustomer.Eof do
begin
with cxSchedulerStorage1.Resources.Items.Add do
begin
Name := IntToStr(x);
ResourceID :=x;
Color := clSkyBlue;
end;
x:=x+1;
dm.DataModule1.dsetCustomer.Next;
end;

Scheduler >>

А нет примера чтобы в узкой ячейке TimeGrid ( год-месяц по горизонтали )
создавать небольшые (не на всю ячейку ) events в runtime
( желательно чтобы при наведении мышки всплывало окошко )
, а то после создания обычным способом появляется значок листания , при нажатии которого ничего не происходит , если только не перейти на день события , но меня не интересуют дни , мне надо чтобы именно в этой ячеки я мог влепить несколько событий типа иконка - пара букв-число ....
Автор: Aleksandr N
Дата сообщения: 05.06.2010 21:46
Использую cxGrid.
Увеличиваю размер шрифта cxGrid, при этом увеличиваются размеры ячеек. Проделываю операцию с возвращением реального значения шрифта, а после операции устанавливаю увеличенный шрифт.

DBGrid1.BeginUpdate;
нормальный размер шрифта DBGrid1
try
операция
finally
возвращаю шрифт DBGrid1
DBGrid1.EndUpdate;
end;

Во время операции размеры ячеек не изменяются, но видно как изменяется размер шрифта.

Как нибудь можно заблокировать визуальное изменение шрифта?
Автор: lysyjChert
Дата сообщения: 07.06.2010 08:15
vladman

Цитата:
Используйте TcxTreeList с установленным свойством OptionsView.CheckGroups


Как построить дерево TcxTreeList я разобрался, а вот OptionsView.CheckGroups такого свойства я не нашел. Использую ExpressQuantum TreeList 4.42
Автор: SIgor33
Дата сообщения: 07.06.2010 08:50
Подскажите возможно ли сделать так:

Т.е. если значение года меньше 2000 то вкладка people не видна если же больше то видна. Если делать в обработчике DetailExpanded то можно скрыть ее но при обработке другой record в которой year>=2000 она появляться вновь. Можно конечно закрыть предыдущий детал, но хотелось чтобы деталы были открыта оба но при этом вкладке people у year>=2000 была а year<2000 небыло как на скриншоте
Автор: marser
Дата сообщения: 07.06.2010 10:45
lysyjChert

Цитата:
а вот OptionsView.CheckGroups такого свойства я не нашел. Использую ExpressQuantum TreeList 4.42

Свойство OptionsView.CheckGroups появилось в ExpressQuantum TreeList 5
Автор: ikamil
Дата сообщения: 07.06.2010 13:56
Подскажите, как определить количество записей в дочернем уровне (или с текущем) при использовании tcxGrid.tcxGridLevel.tcxGridDBTableView.DetailKeyFieldNames

свойство tcxDbTableView.DataController.FocusedRecordIndex все время остается равным -1, и в случае, когда записей нет, cxGrid считает, что мы остаемся на предыдущей записи этого же уровня, но с другим Мастером


Добавлено:
RTFM.
Нашел в доке кульную весчь.

Var
AView: TcxGridDBTableView; rc:integer;
begin
AView := TcxGridDBTableView(GridPhone.FocusedView);
rc:=AView.Controller.FocusedRecordIndex;

if rc>-1 then ....

Спасибо всем.
Автор: Man_Without_Face
Дата сообщения: 08.06.2010 10:11
Всем привет, есть вопрос по cxGrid:
Как получить значения при мультиселекте, т.е. я например через Ctrl выбрал три записи. Нужно получить начальное и конечное значение (9 и 11 (periods)).

Структура таблицы и значения:
periods periods_begindate periods_enddate periods_type
9 2010-02-01 2010-03-01 2
10 2010-03-01 2010-04-01 2
11 2010-04-01 null 1 //Не закрытый период

Компоненты: CxGrid, DataSource, TQuery.
Что то вроде этого: x:= TQuery.FieldByName('periods').Asinteger
y:= TQuery.FieldByName('periods').Asinteger
Автор: marser
Дата сообщения: 08.06.2010 10:27
Man_Without_Face
Посмотрите 5 страниц назад цикл по выделенным записям грида.
Автор: DShtorm
Дата сообщения: 08.06.2010 11:01
подскажите как в CxGrid определить изменение текущего отображаемого набора данных
( сортировка , переход с последней строки на более нижнюю , или с первой на более верхнюю ) ???

+ как обратиться к данным отображаемого набора ???
Автор: marser
Дата сообщения: 08.06.2010 11:28
DShtorm
сортировка:
cобытие DataController.OnSortingChanged
переход с последней строки на более нижнюю , или с первой на более верхнюю:
cобытие OnFocusedRecordChanged
обратиться к данным отображаемого набора:
DataController.Values[]
TcxGridColumn.EditValue (для сфокусированной записи)
Автор: DShtorm
Дата сообщения: 08.06.2010 11:54

Цитата:
переход с последней строки на более нижнюю , или с первой на более верхнюю:
cобытие OnFocusedRecordChanged

У меня работает при перемещении вверх вниз на любой записи ...

А как пробежаться в цикле по всем видимым строкам ?
Или только к первой ( последней ) строке ???
Я бы тогда в OnFocusedRecordChanged сверял поменялись или нет первый/последний id .
Автор: mdid
Дата сообщения: 08.06.2010 12:07
DShtorm

Цитата:
А как пробежаться в цикле по всем видимым строкам ?

в смысле отфильтрованным?

Код:
for I:=0 to cxGrid.DataController.FilteredRecordCount - 1 do begin
cxGrid.DataController.Values[cxGrid.DataController.FilteredRecordIndex[i],YourColumnName.Index])
Автор: marser
Дата сообщения: 08.06.2010 12:17
DShtorm
Так под первой и последней строкой подразумеваете видимые строки?

Цитата:
поменялись или нет первый/последний id

Вы хотите отследить скроллинг? Тогда OnTopRecordIndexChanged
Автор: Man_Without_Face
Дата сообщения: 08.06.2010 12:25
marser
Посмотрел, но все равно не понимаю как значения вытянуть?..(нужно первое и последнее)
Автор: marser
Дата сообщения: 08.06.2010 12:51
Man_Without_Face

Цитата:
Всем привет, есть вопрос по cxGrid:
Как получить значения при мультиселекте, т.е. я например через Ctrl выбрал три записи. Нужно получить начальное и конечное значение (9 и 11 (periods)).

Структура таблицы и значения:
periods periods_begindate periods_enddate periods_type
9 2010-02-01 2010-03-01 2
10 2010-03-01 2010-04-01 2
11 2010-04-01 null 1 //Не закрытый период

Компоненты: CxGrid, DataSource, TQuery.
Что то вроде этого: x:= TQuery.FieldByName('periods').Asinteger
y:= TQuery.FieldByName('periods').Asinteger


Код:
var
I: Integer;
ARowIndex: Integer;
ARecordIndex: Integer;
AMinValue, AMaxValue: Variant;
begin
with <YourGridTableView>.DataController do
for I := 0 to GetSelectedCount - 1 do
begin
ARowIndex := GetSelectedRowIndex(I);
ARecordIndex := GetRowInfo(ARowIndex).RecordIndex;
if I = 0 then
begin
AMinValue := Values[ARecordIndex, <YourColumnPeriods>.Index];
AMaxValue := AMinValue;
end
else
begin
if Values[ARecordIndex, <YourColumnPeriods>.Index] < AMinValue then
AMinValue := Values[ARecordIndex, <YourColumnPeriods>.Index];
if Values[ARecordIndex, <YourColumnPeriods>.Index] > AMaxValue then
AMaxValue := Values[ARecordIndex, <YourColumnPeriods>.Index];
end
end;
end;
Автор: Man_Without_Face
Дата сообщения: 08.06.2010 12:59
marser
Спасибо, после обеда попробую

Автор: DShtorm
Дата сообщения: 08.06.2010 13:45

Цитата:
в смысле отфильтрованным?

нет , тем которые глазу видны ...

Цитата:
Вы хотите отследить скроллинг? Тогда OnTopRecordIndexChanged

работает , только если клавишами перемещаться , при скроллинге мышью
ничего не происходит ...
Автор: SeVoCybershuter
Дата сообщения: 08.06.2010 13:47
Доброго времени суток. Такая проблема... Заказчик хочет, чтобы Footer (общий, не групповой) из ExpressQuantumGrid 6 размещался между данными и шапками полей, т.е. как бы первой строкой. Как это сделать?
Автор: marser
Дата сообщения: 08.06.2010 14:25
DShtorm

Цитата:
нет , тем которые глазу видны


Код: var
I: Integer;
begin
for I :=0 to <YourGridTableView>.DataController.RecordCount - 1 do
begin
if <YourGridTableView>.ViewData.Records[I].Visible then
ShowMessage('Видимая запись');
end;
end;
Автор: DShtorm
Дата сообщения: 08.06.2010 15:09
1) не то RecordCount - дает все записи , включая те , что не видны
есть свойство cxGrid1DBBandedTableView1.ViewInfo.VisibleRecordCount -
которое показывает количество строк видимых в гриде ,
вот по их значениям мне нужно пробежаться

2) первая и последняя строка - я хочу проверить не изменились ли их индексы с последнего раза ...

жаль что событие TopRecordIndexChanged не реагирует почему-то на скрол мышью -
это было бы то что надо , тогда 2 пункт не нужен ...
Автор: X11
Дата сообщения: 08.06.2010 15:29

Цитата:
Заказчик хочет, чтобы Footer (общий, не групповой) из ExpressQuantumGrid 6 размещался между данными и шапками полей,

Обрати внимание на свойство FilterBox

Советую изучить ВСЕ свойства для начала хотя бы поверхностно.


Цитата:
дает все записи , включая те , что не видны

чтобы пройтись по только видимым записям, исключая отфильтрованные, то как уже сказали нужно использовать FilteredRecordCount и FilteredRecordIndex[RecordIndex] и т.д.


Код: with dbgTelCount.DataController do
begin
BeginUpdate;
for I := 0 to FilteredRecordCount - 1 do
begin
if VarIsNull(Values[FilteredRecordIndex[i], colPhonesC1.Index]) then
Tels := VarToStr(Values[FilteredRecordIndex[i], colPhonesC2.Index])
else
Tels := VarToStr(Values[FilteredRecordIndex[i], colPhonesC1.Index]);
Автор: marser
Дата сообщения: 08.06.2010 15:30
DShtorm

Цитата:
не то RecordCount - дает все записи , включая те , что не видны

А разве условие if <YourGridTableView>.ViewData.Records[I].Visible then не работает?

Цитата:
+ первое и последнее я хочу проверить не изменились ли они с последнего раза

C последнего раза чего? Не изменилось что? RecordIndex или значение полей первой и последней видимой записи?

Цитата:
жаль что событие TopRecordIndexChanged не реагирует почему-то на скрол мышью

На все реагирует
Автор: Cryogen2003
Дата сообщения: 08.06.2010 18:45
Добрый вечер. Чего-то совсем голову себе сломал и запутался.
Стало быть что надо:
Надо отобразить в PivotGrid следующие данные:
Сотрудник, Регион, Дата обзвона, Кол-во клиентов, которые обзвонил, Кол-во клиентов, которые захотели участвовать в той или иной программе банка, Процент качества обзвона

Группировка самого пивота идет по дате (Column), в Data уходят оба поля с кол-во клиентов и процент качества обзвона, в Row ФИО сотрудника и региона.
Стало быть затык с процентов качества обзвона клиента. Считается тупо так - кол-во клиентов, которые захотели участвовать в чем-либо / кол-во клиентов, которым звонили * 100.
Я могу посчитать это все в оракле, проблемы нет, но когда начинаешь в рилтайме переставлять поля, то понятно уже проценты не соответствуют истине в тех же группах Row.
Стало быть, как сделать так, чтобы все было правильно?
Автор: DShtorm
Дата сообщения: 08.06.2010 19:36

Цитата:
А разве условие if <YourGridTableView>.ViewData.Records[I].Visible then не работает?

Это я еще не проверял . Подумал что относится к пофильтрованным данным .
а мне надо просто те что на экране есть .

Цитата:
C последнего раза чего? Не изменилось что? RecordIndex или значение полей первой и последней видимой записи?

а если набор пересортировать , то RecordIndex 1 строки будет 1 , или как у новой строки ?
если первое то тогда- 2 вариант со значением полей ...

Цитата:
На все реагирует

У меня на 50 версии на скрол не реагирует к сожелению

Есть еще вопрос , как вывести чтобы в гриде были видны строки целиком
( бывает ситуация что показывает построки данных или к примеру треть )
Автор: marser
Дата сообщения: 08.06.2010 20:48
DShtorm

Цитата:
а если набор пересортировать , то RecordIndex 1 строки будет 1 , или как у новой строки ?

DataController.RecordIndex - Номер записи (начинается с 0). Cовпадает с номером записи в DataSet.
DataController.RоwIndex - Номер строки (начинается с 0) в гриде, как вы видите на экране.
После сортировки, группировки RowIndex изменяется, RecordIndex остается прежним.
Если отсутствует сортировка, группировка, фильтрация RowIndex = RecordIndex.
Получить RowIndex из RecordIndex: DataController.GetRowIndexByRecordIndex(ARecordIndex: Integer).
Получить RecordIndex из RowIndex: DataController.GetRowInfo(ARowIndex: Integer).RecordIndex

Цитата:
У меня на 50 версии на скрол не реагирует к сожелению

У меня 49 версия. 50 глючная.

Цитата:
Есть еще вопрос , как вывести чтобы в гриде были видны строки целиком

OptionsView.CellAutoHeight := True
Автор: fortezza
Дата сообщения: 09.06.2010 11:24
подскажите как добраться к TableView-ам грида?
Хочу обновлять только наборы данных подключенные к тэйблвьювам грида видимомого в данный момент.
делаю так:

Код: for dsInd := 0 to VetArrivalForm.ComponentCount - 1 do
if (VetArrivalForm.Components[dsInd] is TcxGrid) then
if (VetArrivalForm.Components[dsInd] as TcxGrid).CanFocusEx then
(VetArrivalForm.Components[dsInd] as TcxGrid).?????????
Автор: X11
Дата сообщения: 09.06.2010 11:40
есть же ActiveView

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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