powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Позиционирование у контрола формы
19 сообщений из 44, страница 2 из 2
Позиционирование у контрола формы
    #38820215
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
getfocus1guest_rusimport, очередное спасибо!
Но не осознал, что изменилось и где. Ткните носом, пожалуйста.
Что? Что-то не работает?
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #38820261
getfocus1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
guest_rusimportgetfocus1guest_rusimport, очередное спасибо!
Но не осознал, что изменилось и где. Ткните носом, пожалуйста.
Что? Что-то не работает?
Нет. Все замечательно работает. Но я не вижу где и что Вы изменили (по сравнению с предыдущим вариантом), чтобы добиться правильного результата.
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #38820316
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
getfocus1guest_rusimportпропущено...

Что? Что-то не работает?
Нет. Все замечательно работает. Но я не вижу где и что Вы изменили (по сравнению с предыдущим вариантом), чтобы добиться правильного результата.
ну, дык форма frmPos :)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub Form_Open(Cancel As Integer)
    On Error GoTo errEnd
    Call SubClassHookForm("open")
    If Forms.Count > 1 Then
        'Перемещение формы к текущему элементу управления
        Set frm = Application.Screen.ActiveForm
        Set ctlData = Application.Screen.ActiveControl
        
        Dim ctlRect As RECT                 'Позиция контрола
        Dim frmDimensions As Dimensions     'Размеры формы
        Dim frmRect As RECT                 'Позиция формы
        Dim scrDimensions As Dimensions     'Размеры (разрешение) экрана

        'Определяем позицию текущего контрола
 Application.Screen.ActiveControl.SetFocus
        GetWindowRect GetFocus(), ctlRect
.........
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #38820385
getfocus1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть, усвоил. Спасибо.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Позиционирование у контрола формы
    #39370939
NVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поднимаю топик...

Переделываю пример под себя и обнаружил, что при открытии формы (которая у поля открывается) в поле списка нет фокуса. Т.е. без мышки ввести/изменить значение поля не получится, а надо. Привык я писать так, что бы можно было работать без мышки.

Вопрос: как поставить фокус в поле со списком?
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #39371016
NVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и в догонку, если форму открывать не модально, то окно открывается ниже нужного места. При этом в функцию SetWindowPos координаты передаются одинаковые, что при модальном открытии, что без.

Как бы это пофиксить?
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #39371049
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NVT... как поставить фокус в поле со списком?...
Если правильно понял, то делаю так.

Me.[ИмяЭлементаУправления].SetFocus

или

DoCmd.GoToControl "ИмяЭлементаУправления"
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #39371087
NVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лапух, ну такие то простые вещи испробованы. Не пашет, к сожалению...

Вы сами попробуйте...
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #39371094
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NVTпростые вещи испробованы. Не пашет, к сожалению
Сорри, не разбирался с предыдущими постами, но если SetFocus не работает, то это означает практически наверняка, что после этого фокус меняется чем-то другим. Проследите по событиям с помощью Debug.Print, где это происходит. Иногда можно увидеть очень интересные пути прохождения событий
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #39371097
NVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShin,

фокус стоит в поле из которого вызывалось (к которому подвязывалась форма), а вот как его переставить... Это вопрос.
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #39371106
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShin...Сорри, не разбирался с предыдущими постами,...
А я так и ва-а-аще их не смотрел.
Ляпнул, что первое в голову пришло.
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #39371116
NVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил!
Что бы фокус стоял в поле надо вызывать SetWindowPos с другими параметрами, а именно.


SetWindowPos Me.hwnd, True, frmRect.left, frmRect.top, frmDimensions.Width, frmDimensions.Height, SWP_NOZORDER Or SWP_SHOWWINDOW Or SWP_NOSIZE

где:
Private Const SWP_NOSIZE = &H1 ' Don't alter the size
Private Const SWP_NOZORDER = &H4 ' Don't change the Z-order
Private Const SWP_SHOWWINDOW = &H40 ' Display the window
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #39371362
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NVT,
тут в примере 16920668 изначально "накладка" произошла
константа SWP_SHOWWINDOW была объявлена как -

Const SWP_SHOWWINDOW = &H4

а на самом деле надо было как -

Const SWP_SHOWWINDOW = &H40

тогда бы и с курсором и фокусом было бы всё в порядке :)
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #39371506
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NVT, всё гораздо проще. Подсказали как в этом сообщении . Точнее надо воспользоваться недокументированным методом accLocation . С помощью него можно получить координаты контрола/формы в пикселях (в табличной форме есть свои нюансы)

NVT
Код: vbnet
1.
SetWindowPos Me.hwnd, True, frmRect.left, frmRect.top, frmDimensions.Width, frmDimensions.Height, SWP_NOZORDER Or SWP_SHOWWINDOW Or SWP_NOSIZE

Второй аргумент данной функции API не такой! Там тоже используются константы.
Код: vbnet
1.
2.
3.
Const HWND_TOP = 0
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #39371507
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Upd. в функции SetWindowPos если используется SWP_NOSIZE размеры можно не передавать.
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #39371621
NVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport, спасибо за ответ. Есть еще вопрос.

А как быть с тем, что форма открывается в другом месте (сдвинута вниз) если её открывать не как acDialog? В чем может быть трабл?
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #39371652
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NVTguest_rusimport, спасибо за ответ. Есть еще вопрос.

А как быть с тем, что форма открывается в другом месте (сдвинута вниз) если её открывать не как acDialog? В чем может быть трабл?
я лучше на скрине покажу , что надо учитывать , если форма открывается не как acDialog
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #39371679
NVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_rusimport, это понятно )) А как это учесть?
...
Рейтинг: 0 / 0
Позиционирование у контрола формы
    #39371771
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NVTguest_rusimport, это понятно )) А как это учесть?
можно учесть , используя WinAPI функции (какие ? - см. ссылку)
http://netcode.ru/cpp/?click=r-2481.php.htm
...
Рейтинг: 0 / 0
19 сообщений из 44, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Позиционирование у контрола формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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