Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Создание компонентов


Автор: Mr.Picwick 15.11.2004, 11:24
Привет всем.
Я тут недавно одной проблемой занялся. Суть в следующем - мне надо сделать в DBGrid чтобы
по нажатию левой кнопки мыши на заголовок Grid'a содержимое поля сортировалось по возрастанию, правой - по убыванию.
Мучался я мучался и установил RxLib, и использовал оттуда RxDBGrid, и сделал чтобы один раз жмешь - ASC ,другой - Desc
Как говорится проблема решена, но вопрос остался.
Я полагаю мне нужно
1. заменить метод TitleClick(Column : TColumn) класса DBGrid на
метод TitleClick(Column : TColumn; Button : TMouseButton) моего класса, но перекрыть его нельзя т.к. параметры не совпадают.
2. Или оставить все как есть только в методе TitleClick(Column : TColumn) перехватывать сообщения мыши.

Но вот как это все сделать? Если можно приведите пример кода.

Автор: Dimich 15.11.2004, 15:41
А что если задействовать событие OnMouseDown и написать примерно следующее:
Код

procedure TForm1.DBGrid1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 if (X >= DBGrid1.Left) and (X <= DBGrid1.Left + DBGrid1.Columns.Items [0].Width) then
   if Button = mbLeft then ShowMessage ('Левая')
   else if Button = mbRight then ShowMessage ('Правая');
end;

В данном примере обрабатывается нажатие левой или правой кнопки мыши на 1-ю колонку таблицы

Автор: Mr.Picwick 15.11.2004, 17:08
Прикольно, а я сегодня всю башку сломал с хуками, пример набрал - компилится, но не отлавливает.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)