![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DBGrid и двойной клик на заголовке! [D7, MSSQL]
svv © (2004-04-15 18:03:00)Есть DBGrid!
реализовано открывание окна редактирования данных по двойному клику на строке таблицы, а также сортировка по столбцам (кликом по заголовку столбца)
недостаток "чайники" делают двойной клик по заголовку и в результате открывают на редактирование первую отсортированную запись таблицы.
как запретить двойной клик на заголовке и разрешить его на остальных ячейках?
svv (2004-04-16 13:47:00) [1]Большое спасибо!
Все отлично сработало!
PS поступил по примеру от KSergey.
KSergey (2004-04-16 08:28:00) [2]Провел сейчас экспериментик
Как я понимаю - двойной клик отлавливаем в событии OnDblClick DBGrid'а
Тогда могу предложить такой код (проверял):
type TDBGridFreind = class (TDBGrid);
procedure TMainForm.DBGrid1DblClick(Sender: TObject);
var
i: Integer;
pt: TPoint;
begin
pt := Mouse.CursorPos;
pt := DBGrid1.ScreenToClient (pt);
if pt.y > TDBGridFreind(DBGrid1).RowHeights[0] then // если мышь ниже заголовка
ShowMessage ('Двойной клик по ячейкам')
else
ShowMessage ('Двойной клик по заголовку')
end;
Наличие заголовка не проверяется - считаем, что он гарантированно есть.
По хорошему, конечно бы, проверять что клик в в область ячеек попадает (например, если строк в гриде всего 2 и кликаем ниже строк с данными)
Но тогда действительно проще уж пересесть на MouseDown и > [1] Johnmen © (15.04.04 18:07)
ZrenBy (2004-04-15 18:15:00) [3]1.
Поджигай или туши флажок на
OnTitleClick
OnCellClick
2.
OnMouseDown(... X, Y: Integer);
rect = CellRect(0,0);
svv (2004-04-15 18:10:00) [4]а поподробнее можно?
Johnmen (2004-04-15 18:07:00) [5]Анализирую TShiftState на ssDouble