Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Вниз

Как добраться до 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.034 c
3-1086439511
Настенька
2004-06-05 16:45
2004.07.04
dbgrid и stringgrid


9-1065117018
Sacred
2003-10-02 21:50
2004.07.04
GLScene Проблема с координатами!!!


8-1082449330
Sanchos
2004-04-20 12:22
2004.07.04
Воспроизвести mp3?


14-1087390151
Knight
2004-06-16 16:49
2004.07.04
Кто играл на лобзике?


1-1087316859
Артем
2004-06-15 20:27
2004.07.04
Скрипт-файл ресурсов не работает





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский