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 |
|
|