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

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

Автор: AlexCoRu
Дата сообщения: 20.05.2013 16:46
Ага! Спасибо, так всё собралось.
Автор: delphinoob
Дата сообщения: 23.05.2013 10:49
не получается выделить столбец в фокусе
Код: procedure TForm1.cxGrid1DBBandedTableView1CustomDrawCell
(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
ColumnIndex, FocusedColumnIndex: Integer;
begin
FocusedColumnIndex := cxGrid1DBBandedTableView1.Controller.FocusedColumnIndex;
ColumnIndex := AViewInfo.Item.Index;

if ColumnIndex = FocusedColumnIndex then
begin
ACanvas.Brush.Color := clBlue;
end;
end;
Автор: X11
Дата сообщения: 23.05.2013 11:42
А в Styles там случайно нету ничего такого, Лучше изменять стили в свойстве styles
Автор: delphinoob
Дата сообщения: 23.05.2013 11:50
стилей вообще нет. других draw тоже.
Автор: X11
Дата сообщения: 23.05.2013 12:21
а это не оно?

Автор: delphinoob
Дата сообщения: 23.05.2013 13:09
X11
это для выделенной строки, мне нужен столбец.
Автор: X11
Дата сообщения: 23.05.2013 13:55
а искать не пробовали?
http://www.sql.ru/forum/1000309/tcxgrid-vydelenie-kolonki-kotoraya-nahoditsya-na-peresechenii-s-vydelennoy-yacheykoy

нашёл за 7 сек
Автор: X11
Дата сообщения: 23.05.2013 19:22
http://www.sql.ru/forum/745728/selection-v-cxgrid
Автор: delphinoob
Дата сообщения: 24.05.2013 07:59
можно удалить или заменить условие в TcxFilterCriteriaItemList, не удаляя все остальные?
Автор: AlexeiKozlov
Дата сообщения: 25.05.2013 14:59
народ, подскажите где я могу найти devexpress 8.3 под .net ?
Автор: LadyOfWood
Дата сообщения: 25.05.2013 21:06

Цитата:
можно удалить или заменить условие в TcxFilterCriteriaItemList, не удаляя все остальные?

Можно, есть там что-то или в событиях или в DataController. На память не помню.
Автор: neznayka3
Дата сообщения: 27.05.2013 04:05
как узнать, что висит "Lock View", те вызван <grid>.BeginLockedStatePaint()?
Автор: BlackVetal
Дата сообщения: 27.05.2013 10:38
AlexeiKozlov
посмотри тему "Крякнутые компоненты для .Net". там возможно и "лекартство" найдешь ...
Автор: neznayka3
Дата сообщения: 27.05.2013 15:53
юзер фильтрует данные, выбирая значения в выпадающем списке, который находится в заголовке. как узнать, какой столбец фильтруется? желательно в DataController.Filter.OnChanged
Автор: Zeneth
Дата сообщения: 28.05.2013 11:16
[more] Народ, есть задача:
Запретить переход на другую запись грида, если нет данных в одном из полей.
(Грид редактируемый).

Что делаю:
В обработчике датасета BeforeScroll, по этому самому условию (Нет данных в оном из полей),
делаю Abort;
(Всегда такой запрет работал, пока не столкнулся с редактирование в гриде)

Столкнулся со следующей проблемой:
Код работает во всех случаях, кроме того, когда я пытаюсь перейте с записи, которую только что
редактировал.

Что происходит:
Происходит DataSet.BeforeScroll,
Выполняется проверка на пустоту поля,
По проверке выполняется Abort,
А после Abort'а снова заскакивает в BeforeScroll и зацикливается таким образом...

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

Может кто сталкивался с такой проблемой? Или я чего-то не догоняю?
Заранее спасибо всем откликнувшимся

[/more]
Автор: X11
Дата сообщения: 28.05.2013 11:27
Для проверки желательно использовать событие OnValidate
Автор: Zeneth
Дата сообщения: 28.05.2013 15:15
X11
Ммм, а каким образом мне здесь использовать OnValidate?
Если мне не изменяет память, OnValidate выполняется после ввода значения в ячейку... Или я ошибаюсь?

Если это так, то мне не подойдет, ибо пользователя ничто не заставляет вводить данные в нужную мне ячейку.

Мне необходимо оповестить пользователя о том, что он НЕ ввел данные в одну из ячеек в том случае, если он захотел перейти с нее на другую (и соответственно остановить переход, то есть оставить фокус на текущей ячейке).
Автор: X11
Дата сообщения: 28.05.2013 15:42
тогда DataSet.BeforPost?
Автор: Zeneth
Дата сообщения: 28.05.2013 16:06
X11

Спасибо тебе ГридГуру X11
Так действительно работает. (Я даже примерно понимаю почему )
Но все-же интересно, почему же грид циклится при вариате с BeforeScroll именно тогда, когда запись была изменена?...

Если есть соображения по этому поводу, с удовольствием выслушаю.
Но в любом случае, проблема решена и на том большое спасибо
Автор: LadyOfWood
Дата сообщения: 28.05.2013 23:34

Цитата:
юзер фильтрует данные, выбирая значения в выпадающем списке, который находится в заголовке. как узнать, какой столбец фильтруется? желательно в DataController.Filter.OnChanged

Анализируя фильтр, он там представляет собой дерево, в простейшем случае один элемент в котором вся инфа.
Автор: BlackVetal
Дата сообщения: 29.05.2013 06:26
Zeneth
OnValidete должен срабатывать на строку, на каждой ячейке - должен срабатывать эвант валидации от редактора прикрепленного к данной ячейке.
Просто поставьте бряк и посмотрите ...
Автор: X11
Дата сообщения: 31.05.2013 11:27
http://www.devexpress.com/Support/Center/Question/Details/S171329
в 13.1 добавили новый многопоточный алгоритм сортировки, группирования и фильтрации в 3-4 раза быстрее
это, я так понял, для современных процессоров


Цитата:
using the dxDefaultMultiThreadedFiltering and dxDefaultMultiThreadedSorting global constants declared within the cxCustomData unit


а потом ещё добавят в дерево и вертикальную сетку
Автор: reenoip
Дата сообщения: 03.06.2013 09:56
Как перекрыть свойства назначенного скина в cxGrid?



Надо изменить цвет шрифта (тема в гриде - Office11). Стилями - это понятно, но к чему их нужно привязывать?

Добавлено:
Ответ: после применения цвета шрифта в in-design оказалось нужно просто переподключить грид. Вопрос закрыт.
Автор: reenoip
Дата сообщения: 03.06.2013 12:47
Ещё вопрос: диаграмму, которая на моём рисунке выше, можно как-то увеличить? А то на разрешении 1920x1080 диаграмма такая же мелкая, как и на 1024x768, вообще не увеличивается в размерах.
Автор: delphinoob
Дата сообщения: 07.06.2013 07:26
Процедуры должны работать с активной сеткой в TcxGrid. Сетка может быть TcxGridDBTableView или TcxGridDBBandedTableView. Общий предок у них TcxGridTableView, который не подходит. Как написать код, чтобы избежать постоянных проверок? Пока в начале каждой процедуры или функции стоит примерно такой код:
Код: var
FView: TcxGridTableView;
FFilter: TcxDBDataFilterCriteria;
begin
if glGrid1Level1.GridView is TcxGridDBTableView then
begin
FView := TcxGridDBTableView(glGrid1Level1.GridView);
FFilter := TcxGridDBTableView(FView).DataController.Filter;
end
else if glGrid1Level1.GridView is TcxGridDBBandedTableView then
begin
FView := TcxGridDBBandedTableView(glGrid1Level1.GridView);
FFilter := TcxGridDBBandedTableView(FView).DataController.Filter;
end;;
Автор: Darl
Дата сообщения: 07.06.2013 08:24
delphinoob

FView = (TcxGridTableView *)cxGrid1->ActiveView; ?
Автор: delphinoob
Дата сообщения: 07.06.2013 09:24
Darl
View могу получить, надо как то определять какой именно. Например процедура должна работать с DBTableView и DBBandedTableView
Код: procedure p(AView: TcxGridTableView);
begin
//Надо узнать TcxGridDBTableView или TcxGridDBBandedTableView
//Если TcxGridDBTableView, то для работы со столбцами приводить к TcxGridDBColumn иначе к TcxGridDBBandedColumn
end;
Автор: Darl
Дата сообщения: 07.06.2013 10:09
delphinoob

Если процедуры разные действия выполняют, то и код разный будет для гридов. Если же для гридов одинаковое действие, то код пиши один, а активный грид так и вычисляй чз if DBTableView ... then .. else ..., можешь одному напр. Tag=1, др. =0, но опять же потом перед основным кодом if Tag=.. else...
Автор: delphinoob
Дата сообщения: 07.06.2013 10:18
Darl

Цитата:
Если же для гридов одинаковое действие

Одинаковое.В процедурах буду определять тип через Tag. Спасибо.
Автор: Vadim153
Дата сообщения: 10.06.2013 22:27
Добрый день!
Вопрос по ТcxGridDBTableView.
По клику на NewItemRow пользователь может вручную ввести данные для новой строки.
В одну из ячеек необходимо ввести данные программно, без возможности редактирования юзером.
Иначе: как заполнить ячейку новой строки программно, затем все эти данные будут сохраняться в БД.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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