Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как раскрасить DBGrid? 
:(
    Опции темы
rOOxus
Дата 24.10.2006, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 95
Регистрация: 28.8.2006

Репутация: нет
Всего: нет



Господа, на разных форумах я видел много статей о том как это делается на Delphi. Давайте поговорим о том как то же можно сделать с помощью Builder!  smile 

Это сообщение отредактировал(а) rOOxus - 24.10.2006, 16:18
PM MAIL   Вверх
Rodman
Дата 24.10.2006, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122



Ну вот к примеру
PM MAIL WWW Skype GTalk YIM MSN   Вверх
rOOxus
Дата 25.10.2006, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 95
Регистрация: 28.8.2006

Репутация: нет
Всего: нет



спасибо. помогло. но вот в чем загвоздка! не могу понять как работать с TGridDrawState State!  smile 
на Delphi это выглядит так

if gdFocused in State then
 begin
  <рисуем так>
 end
 else
 begin
  <рисуем сяк>
 end

а в Builder if (State  == gdFocused ) - не катит  smile
PM MAIL   Вверх
Rodman
Дата 25.10.2006, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122



У меня тоже не работало...

Я слелал сравнение с номерами столбцов и строк ячейки... попробуй вместо 
Код


if gdFocused in State then
 begin
  <рисуем так>
 end
 else
 begin
  <рисуем сяк>
 end


такое 
Код


if (ACol==2) then //или че нить подобное
 begin
  <рисуем так>
 end
 else
 begin
  <рисуем сяк>
 end

PM MAIL WWW Skype GTalk YIM MSN   Вверх
rOOxus
Дата 25.10.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 95
Регистрация: 28.8.2006

Репутация: нет
Всего: нет



помоему ты не понял. мне надо чтобы так:

СОБЫТИЕ ПРОРИСОВКИ КОЛОНОК

Код

void __fastcall TDeclarantsForm::DBGridDrawColumnCell(
      TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column,
      TGridDrawState State)
{
 if(State == gdSelected) // ОТ ЭТО УСЛОВИЕ ВЫДАЕТ ОШИБКУ
 {
  //<рисуем так>
 }
 else
 {
  //<рисуем этак>
 }
}


в Delphi делается так:

Код

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
BEGIN
 IF (gdSelected in State) Then { А ОТУТ ВСЕ ОК}
 BEGIN
  {<рисуем так>}
 END
 ELSE
 BEGIN
  {<рисуем этак>}
 END
END


Короче надо правильно заменить условие с синтаксиса Delphi на синтаксис C++ Builder. вот.
PM MAIL   Вверх
rOOxus
Дата 25.10.2006, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 95
Регистрация: 28.8.2006

Репутация: нет
Всего: нет



а надо так
Код

void __fastcall TDeclarantsForm::DBGridDrawColumnCell(
      TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column,
      TGridDrawState State)
{
 if(State.Contains(gdSelected)) // И ВСЕ РАБОТАЕТ
 {
  //<рисуем так>
 }
 else
 {
  //<рисуем этак>
 }
}

в help-е нашел  smile 
PM MAIL   Вверх
Rodman
Дата 25.10.2006, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 1
Всего: 122



rOOxus, сори что запутал... я думал ты обрабатываешь OnDrawCells...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
CLIPSA
Дата 27.10.2006, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 6.10.2006

Репутация: нет
Всего: 2



Вот здесь всё очень подробно об этом:

http://www.sources.ru/builder/builder_db.shtml
PM MAIL   Вверх
bas
Дата 27.10.2006, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



PM MAIL   Вверх
aleks88
Дата 5.2.2012, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 31.8.2011

Репутация: нет
Всего: нет



Код

void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender,
      const TRect &Rect, int DataCol, TColumn *Column,
      TGridDrawState State)
{
if ((Dataset1->FieldByName("SUMMA")->Value==500) &&
Column->FieldName=="SUMMA"  )
{
//DBGrid1->Canvas->Brush->Color=clRed;
DBGrid1->Canvas->Font->Color=clRed;
DBGrid1->Canvas->FillRect(Rect);
DBGrid1->Canvas->TextOutA(Rect.left+2, Rect.top+2, Column->Field->Text);
}


Вот так закрашиваю ячейку, в которой числовое значение равно 500.
Но задача несколько иная - закрасить если дата в ячейке, позднее сегодняшней.

Вот так сравниваю даты:

Код

TDate A=Now().CurrentDate();
TDate B=StrToDate(Dataset1->FieldByName("dDate")->AnsiString);
signed char Result=CompareDate(A,B);

Если  StrToDate() возвращает -1, значит ячейку нужно закрасить, как это сделать ? Или есть другой способ закрасить ячейку по условию с датами ?


PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0752 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.