|
|
|
| ячейки(таблицы, спридшита, неважно)
ведь курсор же при проведении по ней мышью - меняется? значить можно определить область в которой он определен.
как? | |
|
| |
|
|
|
| вопрос по другому - как получить hwnd активной ячейки в таблице? | |
|
| |
|
|
|
| Declare Function GetFocus Lib "user32" Alias "GetFocus" () As Long? | |
|
| |
|
|
|
| в принципе уже кое-что получилось :) часть ответа в разделе VB
общая проблема в том - как определить left-top активной ячейки owc компоненты spreadsheet
left определил
осталось учесть прокрутку скроллбара или колесом мыши
и разобраться с top :) | |
|
| |
|
|
|
| возвращает дескриптор компоненты spreadsheet
а мне хочется достучаться до ячейки :(
пока рою инет | |
|
| |
|
|
|
| вот
'-- определяем координаты выбранной ячейки
Dim hwndRichEdit&
Dim sText$
Dim pt As POINTAPI
Dim rc As RECT
Dim fc As RECT
'-- считаем координаты окна
Call GetWindowRect(Me.hwnd, fc)
'-- получить хэндл spreadsheet
v = GetSpshWnd(Me.hwnd)
'-- поискать нужный класс
hwndRichEdit = FindWindowEx(v, ByVal 0&, "RichEdit20W", vbNullString)
'-- определить координаты контрола
GetWindowRect hwndRichEdit, rc
If hwndRichEdit <> 0 Then
dx = Me.ScaleX(rc.Left - fc.Left - 4, vbPixels, vbTwips)
dy = Me.ScaleY((rc.Top - fc.Top) - 4 - _
(GetSystemMetrics(SM_CYMENUSIZE) + _
GetSystemMetrics(SM_CXBORDER) + _
GetSystemMetrics(SM_CYCAPTION)) + _
(rc.Bottom - rc.Top), vbPixels, vbTwips)
'ListRequest Me.List1, "select f.description from fin.CLT_UKRUP_GRP f order by IDGRP"
Me.List1.Left = dx
Me.List1.Top = dy
Me.List1.Width = Me.ScaleX((rc.Right - rc.Left), vbPixels, vbTwips)
Me.List1.Visible = True
End If
|
выводит там где нужно. причем не надо заморачиваться на скроллбары и т.д.
одна проблема - никак не могу определить координаты этого RichEdit20W до того как он появится в выбранной ячейке :) | |
|
| |
|