C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Заливка цветом ячеек в StringGrid, Не получается
** Николай
Отправлено: 16.01.2006, 12:00


Не зарегистрирован







Вообщм пишу такое событие:

void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{

StringGrid1->Canvas->Font->Color = clGreen;
}

Но почему то ничего не красится... В чем ошибка подскажите???
Asher
Отправлено: 16.01.2006, 12:55


Мастер участка

Группа: Модератор
Сообщений: 550



Привет.
StringGrid1->DefaultDrawing = false; сделать не забыл?

Отредактировано Asher — 16/01/2006, 13:56
** Николай
Отправлено: 16.01.2006, 13:09


Не зарегистрирован







Поставил
StringGrid1->DefaultDrawing = false;
все равно не закрашивается:(sad.gif
Asher
Отправлено: 16.01.2006, 13:15


Мастер участка

Группа: Модератор
Сообщений: 550



Надеюсь в первом посте это был не весь код?
Выбрать цвет мало, надо им еще и воспользоваться. biggrin.gif
gvg
Отправлено: 16.01.2006, 13:16


Машинист паровоза

Группа: Участник
Сообщений: 222



Так не StringGrid1->Canvas->Font->Color. Это для шрифта (а при DefaultDrawing=false его самому выводить надо). Ячейки — StringGrid1->Canvas->Brush->Color

Отредактировано gvg — 16/01/2006, 13:16
** Николай
Отправлено: 16.01.2006, 13:35


Не зарегистрирован







Ну конечно не весь:)smile.gif Есть еще и форма и текст в StringGrid1, так вот задача покрасить некоторые ячейки в разные цвета. На, что я сделал такое событие.
где пробовал и так
StringGrid1->Canvas->Brush->Color,
и так
StringGrid1->Canvas->Font->Color,
ничего не происходит...

При установке DefaultDraw = false, пропадает текст из списка...
Asher
Отправлено: 16.01.2006, 13:56


Мастер участка

Группа: Модератор
Сообщений: 550



QUOTE
При установке DefaultDraw = false, пропадает текст из списка...

sad.gif
Естественно пропадает.
При этом вы должны ВСЕ рисовать в StringGrid1DrawCell в таблице сами.
StringGrid1->Canvas->Font->Color
StringGrid1->Canvas->Brush->Color
StringGrid1->Canvas->FillRect
StringGrid1->Canvas->TextRect
вам в этом помогут.
olegenty
Отправлено: 16.01.2006, 13:59


Ветеран

Группа: Модератор
Сообщений: 2412



а я опять предлагаю стандартный рецепт: TMemTableEh + TDBGridEh. намного удобнее, да и обработчик OnDrawColumnCell, с учётом DefaultDrawColumnCell, написать гораздо проще.
Gal
Отправлено: 16.01.2006, 15:43


Станционный диспетчер

Группа: Участник
Сообщений: 124



предлагаю пример:
CODE

void __fastcall TMainForm::StrGridCompDrawCell(TObject *Sender, int ACol,
     int ARow, TRect &Rect, TGridDrawState State)
{
 TStringGrid*     StrGridPtr;

 StrGridPtr = (TStringGrid*)Sender;

 if (ARow == 0)
  {
   StrGridPtr->Canvas->Font->Color  = clNavy;
   StrGridPtr->Canvas->Font->Style  = TFontStyles() << fsBold;
   StrGridPtr->Canvas->Font->Size   = 11;
   StrGridPtr->Canvas->TextRect(Rect,Rect.Left,Rect.Top,StrGridPtr->Cells[ACol][ARow]);
  }
}
Guest
Отправлено: 16.01.2006, 16:05


Не зарегистрирован







QUOTE (olegenty @ 16/01/2006, 13:59)
а я опять предлагаю стандартный рецепт: TMemTableEh + TDBGridEh. намного удобнее, да и обработчик OnDrawColumnCell, с учётом DefaultDrawColumnCell, написать гораздо проще.

В каком месте удобнее? Чего такого может TMemTableEh + TDBGridEh чего не умеет TStringGrid, TDrawGrid?

Вернуться в Вопросы программирования в C++Builder