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

 
Как заменить DrawColumnCell для нового компонента?
cirius
Отправлено: 06.07.2004, 23:39


Ученик-кочегар

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



Подскажите что нужно прописать в h файле компоненты (наследник TCustomDBGrid) чтобы можно было переписать метод DrawColumnCell по-свойму. Я пробовал вставлять декларацию метода прямо как она в хелпе идет в секцию protected: , но выдает ошибку Linker error. Делайте скидку на то что я только недавно за билдер взялся.
AVC
Отправлено: 07.07.2004, 08:08


Ветеран

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



Примерно так. Не проверял но должно работать.
CODE

class PACKAGE TtestDBGrid : public TDBGrid
{ typedef TDBGrid inherited;

private:
TDrawColumnCellEvent FOnDrawColumnCell;
void __fastcall SubOnDrawColumnCell (TObject* Sender, TRect &Rect, int DataCol, TColumn* Column, TGridDrawState State);

__published:
__fastcall TtestDBGrid(TComponent* Owner);
__property TDrawColumnCellEvent OnDrawColumnCell = {read = FOnDrawColumnCell, write = FOnDrawColumnCell };
};

//-------------------------------------------------------------------
__fastcall TtestDBGrid::TtestDBGrid(TComponent* Owner) : TDBGrid(Owner)
{
inherited::OnDrawColumnCell = TDrawColumnCellEvent(&SubOnDrawColumnCell);
}

void __fastcall TtestDBGrid::SubOnDrawColumnCell (TObject* Sender,
TRect &Rect, int DataCol, TColumn* Column, TGridDrawState State)
{
// делаем свои черные дела
if (OnDrawColumnCell) OnDrawColumnCell (Sender, Rect, DataCol, Column, State);
// делаем свои черные дела
}

У наследника дешевле перыкрыть метод DrawCell или Paint меньше возни больше возможностей.

Отредактировано AVC — 07/07/2004, 10:09

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