Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Раскраска строк в DevExpress QuantumGrid C++ Builder 6

5.3K
05 апреля 2004 года
Fantom's
16 / / 05.04.2004
Привет! Кто знает как раскрасить строки в DevExpress QuantumGrid C++ Builder 6 в зависимости от значения какого-нить поля.
Спасибо.
293
06 апреля 2004 года
SEDEGOFF
586 / / 06.10.2002
Подскажи где его взять (и чтоб денег не просил и не глючил)
469
06 апреля 2004 года
Sli
71 / / 20.01.2000
Цитата:
Originally posted by Fantom's
Привет! Кто знает как раскрасить строки в DevExpress QuantumGrid C++ Builder 6 в зависимости от значения какого-нить поля.
Спасибо.



Нужно обрабатывать событие OnDrawCell.
Вот так делал я раскраску по колонке даты ( у меня это было связано со сроком годности )

Код:
void __fastcall cxGrid1DBTableView1CustomDrawCell(
      TcxCustomGridTableView *Sender, TcxCanvas *ACanvas,
      TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone)
{
  if (dynamic_cast<TcxGridTableDataCellViewInfo *>(AViewInfo) != NULL)
   {
   try
   {
        Variant ttt=AViewInfo->GridRecord->Values[((TcxGridDBTableView *)Sender)->GetColumnByFieldName("DEXPIRY_DATE")->Index];
                if(AViewInfo->GridRecord->Selected & !((TcxGridDBTableView *)Sender)->Columns[AViewInfo->Item->Index]->Focused)
                 {
                   ACanvas->Font->Color=clWhite;
                 }
                else
                 {
                   ACanvas->Font->Color=clBlack;
                 }
      if(!ttt.IsNull())
      {
        if(ttt <= (dDate->EditValue+MainForm->OffDate))
        {
                ACanvas->Font->Color=clRed;
        }
        else
        {
         if(ttt <= (dDate->EditValue+MainForm->WarnDate))
         {
                ACanvas->Font->Color=clPurple;
         }
        }
    }
   }
   catch(...)
     {NULL;}
   }
5.3K
06 апреля 2004 года
Fantom's
16 / / 05.04.2004
Большое спасибо!!!!
5.3K
07 апреля 2004 года
Fantom's
16 / / 05.04.2004
Цитата:
Originally posted by Sli


Нужно обрабатывать событие OnDrawCell.
Вот так делал я раскраску по колонке даты ( у меня это было связано со сроком годности )
Код:
void __fastcall cxGrid1DBTableView1CustomDrawCell(
      TcxCustomGridTableView *Sender, TcxCanvas *ACanvas,
      TcxGridTableDataCellViewInfo *AViewInfo, bool &ADone)
{
  if (dynamic_cast<TcxGridTableDataCellViewInfo *>(AViewInfo) != NULL)
   {
   try
   {
        Variant ttt=AViewInfo->GridRecord->Values[((TcxGridDBTableView *)Sender)->GetColumnByFieldName("DEXPIRY_DATE")->Index];
                if(AViewInfo->GridRecord->Selected & !((TcxGridDBTableView *)Sender)->Columns[AViewInfo->Item->Index]->Focused)
                 {
                   ACanvas->Font->Color=clWhite;
                 }
                else
                 {
                   ACanvas->Font->Color=clBlack;
                 }
      if(!ttt.IsNull())
      {
        if(ttt <= (dDate->EditValue+MainForm->OffDate))
        {
                ACanvas->Font->Color=clRed;
        }
        else
        {
         if(ttt <= (dDate->EditValue+MainForm->WarnDate))
         {
                ACanvas->Font->Color=clPurple;
         }
        }
    }
   }
   catch(...)
     {NULL;}
   }




А как быть если поле с текстовым значением то-есть значение текстовое

469
07 апреля 2004 года
Sli
71 / / 20.01.2000
Цитата:
Originally posted by Fantom's
А как быть если поле с текстовым значением то-есть значение текстовое



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

5.3K
07 апреля 2004 года
Fantom's
16 / / 05.04.2004
Цитата:
Originally posted by Sli


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



Извини, я еще не все вкурил
пишу в обработчике:
Variant Status = AViewInfo->GridRecord->Values[((TcxGridDBTableView *)Sender)->GetColumnByFieldName("status")->Index];
if (Status != "Ок")
ACanvas->Brush->Color = clRed;

получаю:
[C++ Error] Unit60.cpp(44): E2015 Ambiguity between '_fastcall Variant::operator wchar_t *() const' and '_fastcall Variant::operator wchar_t * *()'

Как быть? Помоги пожалуйста... Спасибо.

469
07 апреля 2004 года
Sli
71 / / 20.01.2000
я в таких случаях делаю так

if (Status != String("Ок"))
5.3K
08 апреля 2004 года
Fantom's
16 / / 05.04.2004
Цитата:
Originally posted by SEDEGOFF
Подскажи где его взять (и чтоб денег не просил и не глючил)



на мыло мне пиши [email]fantom@oe.if.ua[/email]

5.3K
23 апреля 2004 года
Fantom's
16 / / 05.04.2004
Цитата:
Originally posted by Sli
я в таких случаях делаю так

if (Status != String("Ок"))




Привет! Может подскажешь как в QuantumGrid в Indicator вставить рисунок или иконку (что-то типа как идет редактирование в индикаторе появляется ручка)... Спасибо...

469
23 апреля 2004 года
Sli
71 / / 20.01.2000
Цитата:
Originally posted by Fantom's



Привет! Может подскажешь как в QuantumGrid в Indicator вставить рисунок или иконку (что-то типа как идет редактирование в индикаторе появляется ручка)... Спасибо...



Код:
void __fastcall SSelectManager::OnCustomDrawIndicatorCell(TcxGridTableView * Sender, TcxCanvas * ACanvas, TcxCustomGridIndicatorItemViewInfo * AViewInfo, bool & ADone)
{
       int i=0;
       TcxGridIndicatorRowItemViewInfo *info=dynamic_cast<TcxGridIndicatorRowItemViewInfo *>(AViewInfo);
       if(info)
       {
        i=info->GridRecord->RecordIndex;
                ACanvas->FillRect(AViewInfo->Bounds);
                ACanvas->DrawComplexFrame(AViewInfo->Bounds, clBlack, clBlack, TcxBorders()<<bBottom<< bLeft<< bRight, 1);

                if (условия_рисования)
                {
                        TRect FBounds = AViewInfo->Bounds;
                        int x=(FBounds.Left+FBounds.Right)/2-4;
                        int y=(FBounds.Top+FBounds.Bottom)/2-4;
                        ACanvas->Draw(x,y,tbitmap);
                }

                        ADone=true;
       }
}
5.3K
16 июня 2004 года
Fantom's
16 / / 05.04.2004
Цитата:
Originally posted by Sli


Код:
void __fastcall SSelectManager::OnCustomDrawIndicatorCell(TcxGridTableView * Sender, TcxCanvas * ACanvas, TcxCustomGridIndicatorItemViewInfo * AViewInfo, bool & ADone)
{
       int i=0;
       TcxGridIndicatorRowItemViewInfo *info=dynamic_cast<TcxGridIndicatorRowItemViewInfo *>(AViewInfo);
       if(info)
       {
        i=info->GridRecord->RecordIndex;
                ACanvas->FillRect(AViewInfo->Bounds);
                ACanvas->DrawComplexFrame(AViewInfo->Bounds, clBlack, clBlack, TcxBorders()<<bBottom<< bLeft<< bRight, 1);

                if (условия_рисования)
                {
                        TRect FBounds = AViewInfo->Bounds;
                        int x=(FBounds.Left+FBounds.Right)/2-4;
                        int y=(FBounds.Top+FBounds.Bottom)/2-4;
                        ACanvas->Draw(x,y,tbitmap);
                }

                        ADone=true;
       }
}





Привет! Напиши пожалуйста примером как написать условие рисования например (если поле а = 0). Как ето правильно написать? Плиз.

469
17 июня 2004 года
Sli
71 / / 20.01.2000
Цитата:
Originally posted by Fantom's
Привет! Напиши пожалуйста примером как написать условие рисования например (если поле а = 0). Как ето правильно написать? Плиз.



Чтоб получить значение любой колонки надо сделать так:

 
Код:
Variant ttt=AViewInfo->GridRecord->Values[((TcxGridDBTableView*)Sender)->GetColumnByFieldName("ИмяПоля")->Index];


а далше сравнивей с чем захочеться...
5.3K
29 июня 2004 года
Fantom's
16 / / 05.04.2004
Цитата:
Originally posted by Sli


Чтоб получить значение любой колонки надо сделать так:
 
Код:
Variant ttt=AViewInfo->GridRecord->Values[((TcxGridDBTableView*)Sender)->GetColumnByFieldName("ИмяПоля")->Index];


а далше сравнивей с чем захочеться...



Спасибо за помощь!!!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог