powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / координаты поля
5 сообщений из 5, страница 1 из 1
координаты поля
    #32194536
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как определить координаты контрола в общем случае, т.е. всплывающая форма-ленточная подформа-контрол?


цель открыть форму по координатам етого контрола.
...
Рейтинг: 0 / 0
координаты поля
    #32194537
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Искать сил нет, но, по-моему, надо сначала узнать Топ и Лефт области данных.
...
Рейтинг: 0 / 0
координаты поля
    #32194539
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вру.
...
Рейтинг: 0 / 0
координаты поля
    #32194545
Фотография progist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если не лень - поразбирайся, у меня уже ПИВО

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
Public Type scbDimensions
    Width As Long
    Height As Long
End Type

Public Type scbRect
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type

Private Declare Function GetFocus Lib  "user32"  () As Long
Private Declare Function GetSystemMetrics Lib  "user32"  (ByVal nIndex As Long) As Long
Private Declare Function GetWindowRect Lib  "user32"  (ByVal hwnd As Long, lpRect As scbRect) As Long
Private Declare Function SetWindowPos Lib  "user32"  (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function GetDC Lib  "user32"  (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib  "user32"  (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function GetDeviceCaps Lib  "gdi32"  (ByVal hdc As Long, ByVal nIndex As Long) As Long
  
Const SM_CXSCREEN =  0 
Const SM_CYBORDER =  6 
Const SM_CYSCREEN =  1 
Const SWP_NOZORDER = &H4
Const LOGPIXELSY =  90 
Const LOGPIXELSX =  88 
Const HWND_DESKTOP As Long =  0 

Public ctlFocSmartDateControl As Control
Public mobfrmFromCal As Form
 
   
Public Sub scbFormPlacement(ByRef ctl As Control, frm As Form, _
                            Optional lLeft As Long =  0 , _
                            Optional lTop As Long =  0 , _
                            Optional lAddLeft As Long =  0 , _
                            Optional lAddTop As Long =  0 )
    Dim ctlRect As scbRect
    Dim frmDimensions As scbDimensions
    Dim frmRect As scbRect
    Dim scrDimensions As scbDimensions
    
    ctlRect = scbControlRect(ctl)
    frmDimensions = scbFormDimensions(frm)
    scrDimensions.Width = GetSystemMetrics(SM_CXSCREEN)
    scrDimensions.Height = GetSystemMetrics(SM_CYSCREEN)
    If (scrDimensions.Width - ctlRect.Right) > ctlRect.Left -  1000  Then
        frmRect.Left = ctlRect.Left + lLeft
    Else
        frmRect.Left = ctlRect.Right - frmDimensions.Width + lLeft
    End If
    If (scrDimensions.Height - ctlRect.Bottom) > ctlRect.Top Then
        frmRect.Top = ctlRect.Bottom + lTop
    Else
        frmRect.Top = ctlRect.Top - frmDimensions.Height + lTop + lAddTop
    End If
    SetWindowPos frm.hwnd,  0 , frmRect.Left, frmRect.Top, _
            frmDimensions.Width, frmDimensions.Height, SWP_NOZORDER
    'frm.Visible = True
End Sub

Public Function scbControlRect(ctl As Control) As scbRect
    ctl.Visible = True
    ctl.SetFocus
    GetWindowRect GetFocus(), scbControlRect
End Function

Public Function scbFormDimensions(frm As Form) As scbDimensions
    Dim frmRect As scbRect
    GetWindowRect frm.hwnd, frmRect
    scbFormDimensions.Width = frmRect.Right - frmRect.Left
    scbFormDimensions.Height = frmRect.Bottom - frmRect.Top
End Function
...
Рейтинг: 0 / 0
координаты поля
    #32194562
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2progist

работает, но ...
форма-подформа-поле.

мне надо чтоб при получении фокуса полем было открытие по координатам поля. а умена получается по координатам подформы.
если при двоуном нажатии в поле - все ОК
(cbFormPlacement вставил в открываемую форму на событие Load)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / координаты поля
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]