powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Разукрасить ячейку в cxGrid
25 сообщений из 101, страница 1 из 5
Разукрасить ячейку в cxGrid
    #37952629
Bobby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго дня. Собственно сабж. Необходимо разукрасить ячейку в зависимости от значения соседней. Пытаюсь делать вот так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
procedure TFormmain.RepFieldViewColumn2CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
ARec: TRect;
begin
  ARec := AViewInfo.Bounds;
  if TcxGridDBColumn(AviewInfo.Item).DataBinding.Fieldname = 'strcolor' then
    begin
      Acanvas.brush.Color:=ArepDiagrColor.FieldByName('color').AsInteger;
      ACanvas.Canvas.FillRect(ARec);
    end;
end;


но все ячейки упорно закрашиваются только цветом первой записи датасета. Подскажите, где грабли, плз!!! Заранее благодарен!
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37952675
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bobbyгде граблив данном событии отрисовываемая ячейка не синхронизирована с датасетом, надо обращаться к датаконтроллеру за данными. ты ведь не в гридмоде орудуешь?
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37952676
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может это пример поможет?
http://www.sql.ru/blogs/x11/1335
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37952680
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37952688
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bobby,

используй у grid -> TableView -> Column -> Styles событие OnGetContentStyle

туда передаетс Record
забираешь у него .Values[SomeColumn.Index] и смотришь по нему
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37952689
Bobby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо, разобрался. Вот, что помогло
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
procedure TFormmain.RepFieldViewColumn2CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
ARec: TRect;
val: string;
begin
  ARec := AViewInfo.Bounds;
  if TcxGridDBColumn(AviewInfo.Item).DataBinding.Fieldname = 'strcolor' then
    begin
      val := VarAsType(AViewInfo.GridRecord.DisplayTexts[RepFieldView.GetColumnByFieldName('color').index], varString);
      Acanvas.brush.Color:=strtoint(val);
      ACanvas.Canvas.FillRect(ARec);
    end;
end;



пришлось добавить колонку color и сделать ее невидимой. Может не сильно красиво, но действенно оказалось
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37952697
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BobbyМожет не сильно красиво"все правильно сделал" (С), другие способы геморнее
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37952702
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и вот похожая тема по разукрашке
http://www.sql.ru/forum/actualthread.aspx?tid=320097
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37953216
Aleksey V.P.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BobbyВсем спасибо, разобрался. Вот, что помогло
Код: pascal
1.
2.



пришлось добавить колонку color и сделать ее невидимой. Может не сильно красиво, но действенно оказалось

Не надо боятсо добавлять невидимые "служебные" колонки, это нормально, остальные способы действительно геморнее.
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955556
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey V.P.это нормальноэт на самом деле не очень здоровое решение и я бы предпочел чтоб у девэксов была в этом месте синхронизация (по крайней мере как вариант) но ее увы нет
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955585
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
она есть

просто читать надо данные из грида, а не их датасета.

еще не хватало на каждый чих каждой ячейки базу данных дергать. Это даже тупой TDBGrid не делает
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955616
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavanэт на самом деле не очень здоровое решение и я бы предпочел чтоб у девэксов была в этом месте синхронизация (по крайней мере как вариант) но ее увы нет
Гонять туда-сюда датасет ??? Вы в своём уме ? А если пользователь просто прокрутил грид мышкой ?
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955621
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochона естьсинхронизации с датасетом в этом месте нет
Ariochпросто читать надо данные из грида, а не их датасетас кем разговариваешь?я говорю что приходится читать данные из датаконтроллера (а не грида) потому что нет возможности читать непосредственно из датасета. точнее есть конечно но синхронизироваться врукопашную придется и скорее всего без клона не обойтись. а ты мне: "надо из грида". кому "надо"?
Ariochне хватало на каждый чих каждой ячейки базу данных дергатьFYI "читать данные из датасета" != "дергать бд", про "тупой" комментировать не стану
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955634
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrГонять туда-сюда датасет ???"гонять туда-сюда" в смысле если данных нет в буфере то спозиционироваться по значению ключевого поля, да. опционально конечно как я отметил
DimaBrВы в своём уме ?а есть варианты в чьем я могу быть еще?
DimaBrесли пользователь просто прокрутил грид мышкой ?если "вылезло" несколько ранее невидимых строк то "повставать" на них в датасете перед соответствующими событиями отрисовки. если есть какие-то проблемы то озвучивай их конкретно уже
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955699
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavanесли есть какие-то проблемы то озвучивай их конкретно уже
Конечно есть, проблема в том что если гонять датасет, грид будет сильно тормозить
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955713
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrесли гонять датасет, грид будет сильно тормозитьнаверное возможно если твой датасет настолько тормозной что отыскать несколько визуализируемых строк для него проблема. для моего нет и основные тормоза идут как раз от грида. ну так на то я и предложил это как возможный вариант поведения
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955764
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Загрузите в грид пару сотен строк, и потаскайте ползунок вверх-вниз (бедный датасет)
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955835
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrЗагрузите в грид пару сотен строк, и потаскайте ползунок вверх-внизну кого ты лечишь? я в датаконтроллер (а не грид, повторюсь) гружу сотни тысяч записей и знаю как это говно работает
DimaBrбедный датасету меня "богатый"
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955864
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> FYI "читать данные из датасета" != "дергать бд"

а кто это гарантирует ?
вы же не знаете наперед какой датасет будет ?

Т.е. давай-те просто так нагрузим датасет и будем надеятсья что он достаточно умный, чтобы с этим справиться.
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955866
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если у датасета еще по master-detail подключено несколько других и у на всех ещё повешены свои db-aware контролы - то устроим дискотеку!
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955874
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavanну кого ты лечишь?
Завидую вашему доктору !!!
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955884
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochа кто это гарантирует ?никто вестимо, включая меня
Ariochвы же не знаете наперед какой датасет будет ?я-то знаю, но разрабы девэкса конечно нет, оттого и сделал бы такое поведение опциональным. ты не читаешь что я пишу?
Ariochдавай-те просто так нагрузим датасет и будем надеятсья что он достаточно умный, чтобы с этим справитьсядавай для начала ты просто не будешь фантазировать? про свои мне не надо "надеяться", а те кто живут надеждами пусть наздоровье юзают описанный здесь способ
Ariochесли у датасета еще по master-detail подключено несколько других и у на всех ещё повешены свои db-aware контролы - то устроим дискотекут.е. про клоны ты тоже не увидел?
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955893
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrЗавидую вашему докторуа по теме есть что сказать?
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955904
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну возьми и сделай это в DevExpress'e - исходники же есть.

Интересно как там будет drag-n-drop синхронизироваться или группировка.

Не забывай маленький такой эффект, что при изменении строки в TDataSource должна меняться и текузая строка в гриде.

Т.е. стою я редактирую ячейку по центру, вдруг сбоку всплыло оповещение, в аську мне написали. Всплыло, повисело и уплыло.
Грид натурально начинает в уголке ячейки перерисовывать.
Сдвигает TDataSet, тот сдвигает TDataSource, а тот сдвигает текующую строку в гриде, нафиг закрывая редактор.

В конце концов не даром у TDataSet есть целый массив записей и возможность прочитать не только текущую, но и любую строку, через что TDBGird и работает.

В общем, если тебе не очевидно, что идея твоя неудачная - то просто возьми и сделай. И посмотри что получится.
...
Рейтинг: 0 / 0
Разукрасить ячейку в cxGrid
    #37955930
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochвозьми и сделай это в DevExpress'e - исходники же естьэто к чему? я повторюсь предлагаемый мной вариант вполне реализуется даже без надругательства над фирменными сорцами или создания наследников, чисто с применением использованного здесь хэндлера. а если бы ихные разрабы брали все мои патчи или реализовывали идеи, оно бы там разумеется давно было
Ariochкак там будет drag-n-drop синхронизироватьсяне юзаю потому затрудняюсь сходу без раздумий представить какие могут быть проблемы. обрисуешь?
Ariochили группировкаюзаю, но также с интересом жду описания ожидаемых проблем в приложении к моему варианту
AriochНе забывай маленький такой эффект, что при изменении строки в TDataSource должна меняться и текузая строка в гридениче не понял
AriochСдвигает TDataSetблинский блин, сколько раз тебе повторить про клоны ?
Ariochне даром у TDataSet есть целый массив записей и возможность прочитать не только текущую, но и любую строкуну спасибо за откровения
Ariochесли тебе не очевидно, что идея твоя неудачнаятеперь мне очевидно что про датасеты и девэксы ты знаешь не так много как тебе кажется
Ariochпросто возьми и сделай. И посмотри что получитсяхочешь я тебе дам демку чтоб ты мог сделать то что предлагаешь мне?
...
Рейтинг: 0 / 0
25 сообщений из 101, страница 1 из 5
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Разукрасить ячейку в cxGrid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]