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

 
Работа с ячейками
** Leo
Отправлено: 17.11.2005, 16:21


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







Как изменять шрифт текста в ячейках в компонентеStringGrid1->Cells
seg_r
Отправлено: 17.11.2005, 20:40


Дежурный стрелочник

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



пишешь обработчик OnDrawCell

в пропертях пишешь DefaultDraw = false

а дальше че та типа этого:

CODE

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



// задний фон
Form1->StringGrid1->Canvas->Brush->Color=TColor(RGB(253,238,217));


// выделенный ряд
if (Form1->StringGrid1->Row==ARow) Form1->StringGrid1->Canvas->Brush->Color=TColor(RGB(192,120,17));

// 1 ряд
if (ARow==0) Form1->StringGrid1->Canvas->Brush->Color=TColor(RGB(190,190,190));

// PAINT
// Font color
Form1->StringGrid1->Canvas->Font->Color=clBlack;

// цвет шрифта под выделенным рядом
if (Form1->StringGrid1->Row==ARow) Form1->StringGrid1->Canvas->Font->Color=clWhite;


Form1->StringGrid1->Canvas->FillRect(Rect);
Form1->StringGrid1->Canvas->TextOutA(Rect.Left+2,Rect.Top+2,Form1->StringGrid1->Cells[ACol][ARow]);

}


здеся ряд выделяется, для ячеек сам додумаешься...

да, еще эта
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect,TGridDrawState State)

там :
QGrids

enum Grids__3 { gdSelected, gdFocused, gdFixed };

typedef Set TGridDrawState;

Description

TGridDrawState represents state information about the cell of a grid that is being rendered. It is a set that includes 0 or more of the following:

Value Meaning

gdSelected The cell is currently selected.
gdFocused The cell has input focus.
gdFixed The cell is in the fixed region of the grid.
** Leo
Отправлено: 18.11.2005, 09:48


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







QUOTE (seg_r @ 17/11/2005, 20:40)
пишешь обработчик OnDrawCell

в пропертях пишешь DefaultDraw = false

а дальше че та типа этого:

CODE

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



// задний фон
Form1->StringGrid1->Canvas->Brush->Color=TColor(RGB(253,238,217));


// выделенный ряд
if (Form1->StringGrid1->Row==ARow) Form1->StringGrid1->Canvas->Brush->Color=TColor(RGB(192,120,17));

// 1 ряд
if (ARow==0) Form1->StringGrid1->Canvas->Brush->Color=TColor(RGB(190,190,190));

// PAINT
// Font color
Form1->StringGrid1->Canvas->Font->Color=clBlack;

// цвет шрифта под выделенным рядом
if (Form1->StringGrid1->Row==ARow) Form1->StringGrid1->Canvas->Font->Color=clWhite;


Form1->StringGrid1->Canvas->FillRect(Rect);
Form1->StringGrid1->Canvas->TextOutA(Rect.Left+2,Rect.Top+2,Form1->StringGrid1->Cells[ACol][ARow]);

}


здеся ряд выделяется, для ячеек сам додумаешься...

да, еще эта
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect,TGridDrawState State)

там :
QGrids

enum Grids__3 { gdSelected, gdFocused, gdFixed };

typedef Set<Grids_3, gdSelected, gdFixed> TGridDrawState;

Description

TGridDrawState represents state information about the cell of a grid that is being rendered. It is a set that includes 0 or more of the following:

Value Meaning

gdSelected The cell is currently selected.
gdFocused The cell has input focus.
gdFixed The cell is in the fixed region of the grid.

Спасибо, seg_r. Вроде работает.
gvg
Отправлено: 18.11.2005, 09:48


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

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



2seg_r Вообще-то, вопрос про шрифт, а не про цвета.
Но принцип тот-же: менять Canvas->Font->Name(Size, ets)
olegenty
Отправлено: 18.11.2005, 09:56


Ветеран

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



а я по-прежнему просто порекомендовал бы связку TMemTableEh + TDBGridEh для создания у пользователя ощущения, что он работает в StringGrid.
gvg
Отправлено: 18.11.2005, 10:34


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

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



QUOTE (olegenty @ 18/11/2005, 09:56)
а я по-прежнему просто порекомендовал бы связку TMemTableEh + TDBGridEh для создания у пользователя ощущения, что он работает в StringGrid.

Это, конечно, удобно. Но, если программа не работает с БД, ее размер вырастет существенно, что нехорошо.
olegenty
Отправлено: 18.11.2005, 11:29


Ветеран

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



зато окупается сторицей — время разработки уменьшается, сопровождать — одно удовольствие. а для StringGrid надо целую библиотечку руками даписывать, за-ради и повторного использования, и упрощения сопросвождения кода.

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