Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.04;
Скачать: CL | DM;

Вниз

Как добраться до DBGrid.FPressedCell.X   Найти похожие ветки 

 
Stas   (2004-06-07 13:01) [0]

Суть такая:
На экране в DBGrid - SQL запрос. Поставил у DBGrid свойство dgRowSelect=True. Т.е. подсвечена вся строка. А одно из полей DBGrid - checkbox. Перехватываю двойное нажание, но определить что двойной щелчек произошел именно на CheckBox не могу. Все DBGrid.Columns.Grid.Col и другие возвращают номер(или имя) первого поля в DBGride(строка подсвечена вся и отдельная колонка не индифицируется).
Через inspector нашел DBGrid.FPressedCell.X который указывает нужное мне значение. Его показывает даже watch(дебаг окно).
Но в программе использовать не удается: "Undeclared". Т.е. переменная внутренняя, вероятно.
Как мне до нее добраться то?


 
roottim   (2004-06-07 14:02) [1]

если она в private то написать дочерний класс в юните исходника, где ее и откроеш, а если protected то тоже дочерний класс, но его можеш писать в своем юните... только вряд ли он protected :)

а вообще наверняка сущействует более эргономичное решение чем твое :)


 
Курдль ©   (2004-06-07 14:08) [2]

Specifies the index of the currently selected column in the Columns array.

property SelectedIndex: Integer;


 
NAlexey ©   (2004-06-07 15:02) [3]


const
 CheckWidth = 15;
 CheckHeight = 15;

type
 TxGrid = class(TCustomGrid);

procedure TForm1.StringGrid1DblClick(Sender: TObject);
var
 Pt: TPoint;
 ARow, ACol: Integer;
 TheRect, CheckRect: TRect;
 CellSize: TSize;
 GC: TGridCoord;
begin
 GetCursorPos(Pt);
 Pt := DBGrid1.ScreenToClient(Pt);
 GC := DBGrid1.MouseCoord(Pt.X, Pt.Y);
 TheRect := TxGrid(DBGrid1).CellRect(GC.X, GC.Y);
 CellSize.cx :=  TheRect.Right - TheRect.Left;
 CellSize.cy :=  TheRect.Bottom - TheRect.Top;
 CheckRect.Left :=  TheRect.Left + (CellSize.cx - CheckWidth) div 2;
 CheckRect.Top := TheRect.Top + (CellSize.cy - CheckHeight) div 2;
 CheckRect.Right := CheckRect.Left + CheckWidth;
 CheckRect.Bottom := CheckRect.Top + CheckHeight;

 if PtInRect(CheckRect, Pt) then
   ShowMessage("Yes")
 else
   ShowMessage("No");
end;


 
Stas   (2004-06-07 23:04) [4]

2 roottim: Если можно поподробнее, а то для меня это пока слишком мудренно звучит. Может примерчик?
>сущействует более эргономичное решение чем твое :)
Внимательно слушаю! :)

2 Курдль: Не прокатывает, ВСЕГДА возвращает 0. Т.е. первый столбец.

2 NAlexey: Это если известны размеры Grida?
А вообщем спасибо, буду пытаться что то сделать твоим методом.


 
Курдль   (2004-06-07 23:43) [5]


> 2 Курдль: Не прокатывает, ВСЕГДА возвращает 0. Т.е. первый
> столбец.

Отключи RowSelect.


 
KSergey ©   (2004-06-08 06:54) [6]

> [5] Курдль   (07.06.04 23:43)
> Отключи RowSelect.

Это уже изменение условия задачи.

> [4] Stas   (07.06.04 23:04)
> 2 NAlexey: Это если известны размеры Grida?

А его размеры и так всегда известны ;)


 
ЮЮ ©   (2004-06-08 07:41) [7]

> Отключи RowSelect.
> Это уже изменение условия задачи.

RowSelect означает, что тв выбирать будешь ТОЛЬКО СТРОКИ, а не отдельные поля. А для разукрашивания выбранной строки надо использовать не RowSelect, а отрисовать в OnDraw...


 
NAlexey ©   (2004-06-08 07:59) [8]

>Stas   (07.06.04 23:04) [4]
Размеры грида здесь вообще нипричем. Check имеет определенные размеры и располагается посередине ячейки. При двойном клике выясняешь что мышь находится в пределах области чека.


 
Stas   (2004-06-08 11:35) [9]

2 NAlexey. Да я разобрался, единственная нестыковочка - срабатывает в середине ЛЮБОГО поля, а не только CheckBox.

2 ЮЮ. Попробую.



Страницы: 1 вся ветка

Текущий архив: 2004.07.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.103 c
1-1087815304
Max111
2004-06-21 14:55
2004.07.04
Работа с "чужой" формой


1-1087387186
Anthony
2004-06-16 15:59
2004.07.04
RichEdit vs. таблица


9-1079155881
Zak3D[@Tm]
2004-03-13 08:31
2004.07.04
Ограничение движения курсора


14-1086376271
Копир
2004-06-04 23:11
2004.07.04
Один немецкий студент ежедневно, посещая Университет,


1-1087301043
Gemini
2004-06-15 16:04
2004.07.04
Имееться ListView в котором надо сортировать числа.