cirius |
Отправлено: 08.07.2004, 17:48 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 6
|
Событие срабатывает только если нажать вне сетки (чуть ниже последней строки или на шапке например). Нажатие внутри сетки не фиксируется. В чем может быть проблемма? |
|
Gedeon |
Отправлено: 08.07.2004, 18:41 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
У меня срабатывает, показывайте код, где-то значит че-то переопределено, кстати какой грид?
|
|
cirius |
Отправлено: 09.07.2004, 13:24 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 6
|
Просто делаю новый проект, кидаю на форму стандартный DBGrid и на событие OnMouseDown пишу ShowMessage(....).
На всех остальных гридах нормально работает. |
|
Gedeon |
Отправлено: 09.07.2004, 14:03 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Судя по всему там этот ивент и не должен происходить, для этого есть специальный
CODE |
void __fastcall TForm1::DBGrid1CellClick(TColumn *Column)
{
ShowMessage("Down");
}
//--------------------------------------------------------------------------- |
|
|
cirius |
Отправлено: 09.07.2004, 15:23 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 6
|
Дело в том, что я сделал компонент, наследник DBGird и переписал у него методы как тут посоветовали:
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);
// делаем свои черные дела
}
Так вот, если такимже способом переписать метод CellClick,то при вызове родного метода [предпоследняя строка кода — OnDrawColumnCell (Sender, Rect, DataCol, Column, State)] он не дает добавить к вызову Sender и соответсвенно работает как попало и никак не определиш на какой столбец ты попал.
Кроме этого мне еще очень желательно знать координаты мышки в момент щелчка в ячейке.
Отредактировано cirius — 09/07/2004, 16:30 |
|