Ага! Спасибо, так всё собралось.
» Использование DevExpress (часть 4)
не получается выделить столбец в фокусе
Код: 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;
Код: 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;
А в Styles там случайно нету ничего такого, Лучше изменять стили в свойстве styles
стилей вообще нет. других draw тоже.
а это не оно?
X11
это для выделенной строки, мне нужен столбец.
это для выделенной строки, мне нужен столбец.
а искать не пробовали?
http://www.sql.ru/forum/1000309/tcxgrid-vydelenie-kolonki-kotoraya-nahoditsya-na-peresechenii-s-vydelennoy-yacheykoy
нашёл за 7 сек
http://www.sql.ru/forum/1000309/tcxgrid-vydelenie-kolonki-kotoraya-nahoditsya-na-peresechenii-s-vydelennoy-yacheykoy
нашёл за 7 сек
можно удалить или заменить условие в TcxFilterCriteriaItemList, не удаляя все остальные?
народ, подскажите где я могу найти devexpress 8.3 под .net ?
Цитата:
можно удалить или заменить условие в TcxFilterCriteriaItemList, не удаляя все остальные?
Можно, есть там что-то или в событиях или в DataController. На память не помню.
как узнать, что висит "Lock View", те вызван <grid>.BeginLockedStatePaint()?
AlexeiKozlov
посмотри тему "Крякнутые компоненты для .Net". там возможно и "лекартство" найдешь ...
посмотри тему "Крякнутые компоненты для .Net". там возможно и "лекартство" найдешь ...
юзер фильтрует данные, выбирая значения в выпадающем списке, который находится в заголовке. как узнать, какой столбец фильтруется? желательно в DataController.Filter.OnChanged
[more] Народ, есть задача:
Запретить переход на другую запись грида, если нет данных в одном из полей.
(Грид редактируемый).
Что делаю:
В обработчике датасета BeforeScroll, по этому самому условию (Нет данных в оном из полей),
делаю Abort;
(Всегда такой запрет работал, пока не столкнулся с редактирование в гриде)
Столкнулся со следующей проблемой:
Код работает во всех случаях, кроме того, когда я пытаюсь перейте с записи, которую только что
редактировал.
Что происходит:
Происходит DataSet.BeforeScroll,
Выполняется проверка на пустоту поля,
По проверке выполняется Abort,
А после Abort'а снова заскакивает в BeforeScroll и зацикливается таким образом...
Эта сутиация проявляется именно тогда, когда я пытаюсь перейти с только что редактированной записи... (Если грид менялся в других местах все нормально)
Может кто сталкивался с такой проблемой? Или я чего-то не догоняю?
Заранее спасибо всем откликнувшимся
[/more]
Запретить переход на другую запись грида, если нет данных в одном из полей.
(Грид редактируемый).
Что делаю:
В обработчике датасета BeforeScroll, по этому самому условию (Нет данных в оном из полей),
делаю Abort;
(Всегда такой запрет работал, пока не столкнулся с редактирование в гриде)
Столкнулся со следующей проблемой:
Код работает во всех случаях, кроме того, когда я пытаюсь перейте с записи, которую только что
редактировал.
Что происходит:
Происходит DataSet.BeforeScroll,
Выполняется проверка на пустоту поля,
По проверке выполняется Abort,
А после Abort'а снова заскакивает в BeforeScroll и зацикливается таким образом...
Эта сутиация проявляется именно тогда, когда я пытаюсь перейти с только что редактированной записи... (Если грид менялся в других местах все нормально)
Может кто сталкивался с такой проблемой? Или я чего-то не догоняю?
Заранее спасибо всем откликнувшимся
[/more]
Для проверки желательно использовать событие OnValidate
X11
Ммм, а каким образом мне здесь использовать OnValidate?
Если мне не изменяет память, OnValidate выполняется после ввода значения в ячейку... Или я ошибаюсь?
Если это так, то мне не подойдет, ибо пользователя ничто не заставляет вводить данные в нужную мне ячейку.
Мне необходимо оповестить пользователя о том, что он НЕ ввел данные в одну из ячеек в том случае, если он захотел перейти с нее на другую (и соответственно остановить переход, то есть оставить фокус на текущей ячейке).
Ммм, а каким образом мне здесь использовать OnValidate?
Если мне не изменяет память, OnValidate выполняется после ввода значения в ячейку... Или я ошибаюсь?
Если это так, то мне не подойдет, ибо пользователя ничто не заставляет вводить данные в нужную мне ячейку.
Мне необходимо оповестить пользователя о том, что он НЕ ввел данные в одну из ячеек в том случае, если он захотел перейти с нее на другую (и соответственно остановить переход, то есть оставить фокус на текущей ячейке).
тогда DataSet.BeforPost?
X11
Спасибо тебе ГридГуру X11
Так действительно работает. (Я даже примерно понимаю почему )
Но все-же интересно, почему же грид циклится при вариате с BeforeScroll именно тогда, когда запись была изменена?...
Если есть соображения по этому поводу, с удовольствием выслушаю.
Но в любом случае, проблема решена и на том большое спасибо
Спасибо тебе ГридГуру X11
Так действительно работает. (Я даже примерно понимаю почему )
Но все-же интересно, почему же грид циклится при вариате с BeforeScroll именно тогда, когда запись была изменена?...
Если есть соображения по этому поводу, с удовольствием выслушаю.
Но в любом случае, проблема решена и на том большое спасибо
Цитата:
юзер фильтрует данные, выбирая значения в выпадающем списке, который находится в заголовке. как узнать, какой столбец фильтруется? желательно в DataController.Filter.OnChanged
Анализируя фильтр, он там представляет собой дерево, в простейшем случае один элемент в котором вся инфа.
Zeneth
OnValidete должен срабатывать на строку, на каждой ячейке - должен срабатывать эвант валидации от редактора прикрепленного к данной ячейке.
Просто поставьте бряк и посмотрите ...
OnValidete должен срабатывать на строку, на каждой ячейке - должен срабатывать эвант валидации от редактора прикрепленного к данной ячейке.
Просто поставьте бряк и посмотрите ...
http://www.devexpress.com/Support/Center/Question/Details/S171329
в 13.1 добавили новый многопоточный алгоритм сортировки, группирования и фильтрации в 3-4 раза быстрее
это, я так понял, для современных процессоров
Цитата:
а потом ещё добавят в дерево и вертикальную сетку
в 13.1 добавили новый многопоточный алгоритм сортировки, группирования и фильтрации в 3-4 раза быстрее
это, я так понял, для современных процессоров
Цитата:
using the dxDefaultMultiThreadedFiltering and dxDefaultMultiThreadedSorting global constants declared within the cxCustomData unit
а потом ещё добавят в дерево и вертикальную сетку
Как перекрыть свойства назначенного скина в cxGrid?
Надо изменить цвет шрифта (тема в гриде - Office11). Стилями - это понятно, но к чему их нужно привязывать?
Добавлено:
Ответ: после применения цвета шрифта в in-design оказалось нужно просто переподключить грид. Вопрос закрыт.
Надо изменить цвет шрифта (тема в гриде - Office11). Стилями - это понятно, но к чему их нужно привязывать?
Добавлено:
Ответ: после применения цвета шрифта в in-design оказалось нужно просто переподключить грид. Вопрос закрыт.
Ещё вопрос: диаграмму, которая на моём рисунке выше, можно как-то увеличить? А то на разрешении 1920x1080 диаграмма такая же мелкая, как и на 1024x768, вообще не увеличивается в размерах.
Процедуры должны работать с активной сеткой в 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;;
Код: 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;;
delphinoob
FView = (TcxGridTableView *)cxGrid1->ActiveView; ?
FView = (TcxGridTableView *)cxGrid1->ActiveView; ?
Darl
View могу получить, надо как то определять какой именно. Например процедура должна работать с DBTableView и DBBandedTableView
Код: procedure p(AView: TcxGridTableView);
begin
//Надо узнать TcxGridDBTableView или TcxGridDBBandedTableView
//Если TcxGridDBTableView, то для работы со столбцами приводить к TcxGridDBColumn иначе к TcxGridDBBandedColumn
end;
View могу получить, надо как то определять какой именно. Например процедура должна работать с DBTableView и DBBandedTableView
Код: procedure p(AView: TcxGridTableView);
begin
//Надо узнать TcxGridDBTableView или TcxGridDBBandedTableView
//Если TcxGridDBTableView, то для работы со столбцами приводить к TcxGridDBColumn иначе к TcxGridDBBandedColumn
end;
delphinoob
Если процедуры разные действия выполняют, то и код разный будет для гридов. Если же для гридов одинаковое действие, то код пиши один, а активный грид так и вычисляй чз if DBTableView ... then .. else ..., можешь одному напр. Tag=1, др. =0, но опять же потом перед основным кодом if Tag=.. else...
Если процедуры разные действия выполняют, то и код разный будет для гридов. Если же для гридов одинаковое действие, то код пиши один, а активный грид так и вычисляй чз if DBTableView ... then .. else ..., можешь одному напр. Tag=1, др. =0, но опять же потом перед основным кодом if Tag=.. else...
Darl
Цитата:
Одинаковое.В процедурах буду определять тип через Tag. Спасибо.
Цитата:
Если же для гридов одинаковое действие
Одинаковое.В процедурах буду определять тип через Tag. Спасибо.
Добрый день!
Вопрос по ТcxGridDBTableView.
По клику на NewItemRow пользователь может вручную ввести данные для новой строки.
В одну из ячеек необходимо ввести данные программно, без возможности редактирования юзером.
Иначе: как заполнить ячейку новой строки программно, затем все эти данные будут сохраняться в БД.
Вопрос по ТcxGridDBTableView.
По клику на NewItemRow пользователь может вручную ввести данные для новой строки.
В одну из ячеек необходимо ввести данные программно, без возможности редактирования юзером.
Иначе: как заполнить ячейку новой строки программно, затем все эти данные будут сохраняться в БД.
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
Предыдущая тема: Помогите пожалуйста с блокировкой клавиатуры и мышки
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.