powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Управление формами
121 сообщений из 121, показаны все 5 страниц
Управление формами
    #39298894
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется приложение которое при запуске выводит Форму 1 которая должна иметь некоторый размер, возможность передвигаться по экрану, минимизироваться на панель задач и восстанавливаться до своего фиксированного размера (вместе с окном Access потому как по другому минимизировать на панель задач не получается). Из этой формы открывается Форма 2 которая по умолчанию разворачивается на весь экран и тоже должна минимизироваться и восстанавливаться. При закрытии кнопкой закрытия Access Формы 2, она закрывается, передавая управление на Форму 1 а при её закрытии закрывается всё приложение.
Всё это удалось реализовать более-менее нормально. Но осталась одна проблема. Как сделать чтобы невозможно было развернуть или изменить размеры Формы 1 а у Формы 2 эти возможности оставались. То есть в режиме когда на экране Форма 1, была не активна кнопка разворачивания окна и мышкой невозможно было вцепится для изменения размера формы.
...
Рейтинг: 0 / 0
Управление формами
    #39298908
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV,
...
Рейтинг: 0 / 0
Управление формами
    #39298909
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOVкогда на экране Форма 1, была не активна кнопка разворачивания окна и мышкой невозможно было вцепится для изменения размера формы.

Поменяйте тип границы окна с изменяемого на другой и отключите кнопки минимизации-максимизации в свойствах окна.
...
Рейтинг: 0 / 0
Управление формами
    #39298942
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

Похожим вариантом для решения технического задания на данный момент пользуюсь и я но есть очень существенный недостаток из за которого и пытаюсь отказаться от скрытого окна Access.
В вашем примере минусы:
1. Невозможно минимизировать формы на панель задач, в лучшем случае в левый нижний угол
2. Проблемы с максимизацией Формы 2. Она не держит весь экран, и надо или точно задавать размеры или будут варианты нежелательного восстановления при получении фокуса программы.
Один плюс этого способа в том что получается более красивая рамка формы потому как окно самого Accessа имеет вдавленый контур. Но минусы в сравнении с этим огромные.
...
Рейтинг: 0 / 0
Управление формами
    #39298943
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShin,

Ваше предложение не проходит из за того что в моём примере имеем дело не с окном формы а окном самого Accessa. В том то и задача чтобы это сделать с его окном.
...
Рейтинг: 0 / 0
Управление формами
    #39298956
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV, я не стесняюсь Access и не пользуюсь скрытием окна приложения. Чего и тебе желаю.
...
Рейтинг: 0 / 0
Управление формами
    #39298957
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV, да, остальное мелочи и решаемо.
...
Рейтинг: 0 / 0
Управление формами
    #39298960
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV2. Проблемы с максимизацией Формы 2. Она не держит весь экран, и надо или точно задавать размеры или будут варианты нежелательного восстановления при получении фокуса программы.С этим проблем в сделанном мной примере не обнаружил (только что посмотрел)
...
Рейтинг: 0 / 0
Управление формами
    #39298962
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

Согласен на 100%. Я тоже не стесняюсь. Но со временем уже начинаю замечать эти мелочи. К примеру пользователь хочет скрыть программу чтобы временно перейти в другую. В принципе есть много способов это сделать и это не проблема, но я замечал что большинство пользователей моей программы лезут в правый верхний угол её свернуть (хотя можно минимизировать все окна или просто переключится в другую интересующую программу). Если не скрывать окно Access (а по факту у меня сейчас так и есть) то программа минимизируется в окне но рабочее пространство не очищается, потому как надо ещё минимизовать и сам Access, а это опять щёлкать, пользователи начинают нервничать и теряться (ну они не сильно продвинутые в таком деле). То же и при разворачивании. Почему так действуют пользователи трудно сказать, возможно потому что остальные программы таким образом отлично улетают на панель задач а потом так же красиво возвращаются.
Из за этого и решил каким-то образом побороть это неудобство (конечно же оно не критическое но всё равно имеет своё влияние на субъективное восприятие программы)
...
Рейтинг: 0 / 0
Управление формами
    #39298964
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПанургGVOV2. Проблемы с максимизацией Формы 2. Она не держит весь экран, и надо или точно задавать размеры или будут варианты нежелательного восстановления при получении фокуса программы.С этим проблем в сделанном мной примере не обнаружил (только что посмотрел)

В вашем примере она принимает размер экрана но не минимизируется из за чего у меня чуточку вылазит за левую кромку монитора и немного перекрывает панель задач. Вин 7
...
Рейтинг: 0 / 0
Управление формами
    #39298969
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поиском нашёл способ заблокировать изменение окна Access с помошью АРI но то ли криво прицепил (к сожалению в АРI не разбираюсь) то ли сам способ кривоватый но вылезли побочные эффекты.
При запуске всё отлично. Форма стабильного размера и ведёт себя как и надо, минимизируется и восстанавливается как по кнопке минимизации так и по щелчку на панели задач. Но когда запустить Форму 2 то она почему то не максимизируется а опять таки принимает форму разрешения экрана. А когда её закрыть то у Формы 1 появляются проблемы с перемещением по экрану.
Соответственно задача почти решена но появилась нестабильность поведения форм в процессе пользования ими. Как стабилизовать эти две формы чтобы их открытие- закрытие и перемещение первой происходило без посторонних эффектов.
...
Рейтинг: 0 / 0
Управление формами
    #39299039
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOVВаше предложение не проходит из за того что в моём примере имеем дело не с окном формы а окном самого Accessa
Ну и где было упоминание того, что речь идет об окне Акцесса, а не о Форме 1?
Спрячьте окно Акцесса за формой 1. Я буквально на днях публиковал код для этого
...
Рейтинг: 0 / 0
Управление формами
    #39299049
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShinGVOVВаше предложение не проходит из за того что в моём примере имеем дело не с окном формы а окном самого Accessa
Ну и где было упоминание того, что речь идет об окне Акцесса, а не о Форме 1?
Спрячьте окно Акцесса за формой 1. Я буквально на днях публиковал код для этого

Об окне Акцесса было упоминание в первом посте.
Прятать за формой 1 неплохая идея, надо бы попробовать, будут ли побочные эффекты.
А в какой теме код, не подскажите?
...
Рейтинг: 0 / 0
Управление формами
    #39299050
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но как будет с минимизациями на панель задач если окно будет спрятано?
...
Рейтинг: 0 / 0
Управление формами
    #39299063
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOVА в какой теме код, не подскажите?
Сорри, это я не здесь публиковал. Вот сам код, только объявления API функций отсутствуют, долго было вычленять их из общего списка объявлений. Приложил полный список объявлений для 64 битной версии, может пригодиться. Легко преобразовать в 32-х разрядную форму. Если не справитесь, выдерну эти несколько функций завтра.

Минимизации-максимизации также обрабатываются.

Private Sub Form_Resize()
'main form
'Let us know when Form is Maximized...

If CBool(IsZoomed(Me.hwnd)) = True Then
funSetAccessWindow (SW_SHOWMAXIMIZED)
DoCmd.Maximize
Me.TimerInterval = 0
ElseIf CBool(IsIconic(Me.hwnd)) = True Then
funSetAccessWindow (SW_SHOWMINIMIZED)
Me.TimerInterval = 0
Else
'enable constant size sync
Me.TimerInterval = 100
SyncMainWindowSize Me, True
End If
End Sub

Private Sub Form_Timer()
SyncMainWindowSize Me
End Sub

Public Function SyncMainWindowSize(frm As Form, Optional blnForce As Boolean = False)
Dim rctForm As RECT
Dim iRtn As Integer
Dim blnMoved As Boolean

Static x As Integer
Static y As Integer
Static cx As Integer
Static cy As Integer

#If VBA7 And Win64 Then
Dim hWndAccess As LongPtr
#Else
Dim hWndAccess As Long
#End If

If GetWindowRect(frm.hwnd, rctForm) Then
If x <> rctForm.Left Then
x = rctForm.Left
blnMoved = True
End If

If y <> rctForm.Top Then
y = rctForm.Top
blnMoved = True
End If
If cx <> rctForm.Right - rctForm.Left Then
cx = rctForm.Right - rctForm.Left
blnMoved = True
End If
If cy <> rctForm.Bottom - rctForm.Top Then
cy = rctForm.Bottom - rctForm.Top
blnMoved = True
End If

If blnMoved Or blnForce Then
'move/resize main window
hWndAccess = Application.hWndAccessApp
iRtn = apiShowWindow(hWndAccess, WM_SW_RESTORE)
Call SetWindowPos(hWndAccess, 0, x, y, cx, cy, WM_SWP_NOZORDER Or WM_SWP_SHOWWINDOW)
End If
End If
End Function

Function funSetAccessWindow(nCmdShow As Long)
'Usage Examples
'Maximize window:
' ?funSetAccessWindow(SW_SHOWMAXIMIZED)
'Minimize window:
' ?funSetAccessWindow(SW_SHOWMINIMIZED)
'Hide window:
' ?funSetAccessWindow(SW_HIDE)
'Normal window:
' ?funfSetAccessWindow(SW_SHOWNORMAL)
Dim loX As Long
On Error GoTo ErrorHandler

loX = apiShowWindow(hWndAccessApp, nCmdShow)
funSetAccessWindow = (loX <> 0)
End Function
...
Рейтинг: 0 / 0
Управление формами
    #39299064
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так покрасивее будет:

Код: vbnet
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.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
Private Sub Form_Resize()
'main form
'Let us know when Form is Maximized...

If CBool(IsZoomed(Me.hwnd)) = True Then
    funSetAccessWindow (SW_SHOWMAXIMIZED)
    DoCmd.Maximize
    Me.TimerInterval = 0
ElseIf CBool(IsIconic(Me.hwnd)) = True Then
    funSetAccessWindow (SW_SHOWMINIMIZED)
    Me.TimerInterval = 0
Else
    'enable constant size sync
    Me.TimerInterval = 100
    SyncMainWindowSize Me, True
End If
End Sub

Private Sub Form_Timer()
SyncMainWindowSize Me
End Sub

Public Function SyncMainWindowSize(frm As Form, Optional blnForce As Boolean = False)
Dim rctForm As RECT
Dim iRtn As Integer
Dim blnMoved As Boolean

Static x As Integer
Static y As Integer
Static cx As Integer
Static cy As Integer

#If VBA7 And Win64 Then
    Dim hWndAccess As LongPtr
#Else
    Dim hWndAccess As Long
#End If

If GetWindowRect(frm.hwnd, rctForm) Then
    If x <> rctForm.Left Then
        x = rctForm.Left
        blnMoved = True
    End If

    If y <> rctForm.Top Then
        y = rctForm.Top
        blnMoved = True
    End If
    If cx <> rctForm.Right - rctForm.Left Then
        cx = rctForm.Right - rctForm.Left
        blnMoved = True
    End If
    If cy <> rctForm.Bottom - rctForm.Top Then
        cy = rctForm.Bottom - rctForm.Top
        blnMoved = True
    End If

    If blnMoved Or blnForce Then
        'move/resize main window
        hWndAccess = Application.hWndAccessApp
        iRtn = apiShowWindow(hWndAccess, WM_SW_RESTORE)
        Call SetWindowPos(hWndAccess, 0, x, y, cx, cy, WM_SWP_NOZORDER Or WM_SWP_SHOWWINDOW)
    End If
End If
End Function

Function funSetAccessWindow(nCmdShow As Long)
'Usage Examples
'Maximize window:
'       ?funSetAccessWindow(SW_SHOWMAXIMIZED)
'Minimize window:
'       ?funSetAccessWindow(SW_SHOWMINIMIZED)
'Hide window:
'       ?funSetAccessWindow(SW_HIDE)
'Normal window:
'       ?funfSetAccessWindow(SW_SHOWNORMAL)
    Dim loX  As Long
    On Error GoTo ErrorHandler

    loX = apiShowWindow(hWndAccessApp, nCmdShow)
    funSetAccessWindow = (loX <> 0)
End Function


...
Рейтинг: 0 / 0
Управление формами
    #39299066
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Действительно так понятнее.
Обьявлять API я не умею, но думаю, что с помощью поиска разберусь.
Результат, если что получится, покажу.
...
Рейтинг: 0 / 0
Управление формами
    #39299257
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал осилить API. С трудом объявил все функции и запустил предложенный код, но наверное у меня не достаточно знаний так как при запуске приложения остаётся только на панели кнопка Access и больше ни чего (окно скрывается но и формы не видно).

Попробую более точно сформулировать что хочется получить:
1. При запуске выводится форма 1 фиксированного размера с кнопкой минимизации. Свободно перемещается по экрану.
2. По нажатии кнопки минимизации формы или щелчке на панели задач она сворачивается на панель задач и по щелчку разворачивается.
3. Запускаем форму 2. Она разворачивается на весь экран и так же при щелчке на панели задач она сворачивается на панель задач и по щелчку разворачивается.
4. При закрытии формы 2 остаётся форма 1 со свойствами описанными пункте 1.

Помогите, если не трудно, кто в этом лучше разбирается.
...
Рейтинг: 0 / 0
Управление формами
    #39299301
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня в Form_Open стоит максимизация формы, для начала это добавьте, если заработает, то вместо максимизации поставьте разворачивание в оконном режиме и установку необходимого размера/положения. В помощь примеры работы с окнами "Window Manipulation Examples" с сайта http://www.peterssoftware.com/ Там много других интересных примеров.
...
Рейтинг: 0 / 0
Управление формами
    #39299321
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV, потестируй. У меня вроде работает на 2003 2007 как ты просил.
...
Рейтинг: 0 / 0
Управление формами
    #39299358
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПанургGVOV, потестируй. У меня вроде работает на 2003 2007 как ты просил.
Всё почти так как хотелось за исключением того что формы запускаются в режиме диалогового окна и убрать с экрана их можно только минимизировав (согласен это как и просилось) но перключится в другую програму с помощью панели задач или Alt+Tab не получается, форма всё равно висит сверху. А если убрать диалоговый режим, форма пропадает (то же что было и у меня при экспериментах).
Это можно как то решить оставив этот механизм скрытия окна?
...
Рейтинг: 0 / 0
Управление формами
    #39299359
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShinУ меня в Form_Open стоит максимизация формы, для начала это добавьте, если заработает, то вместо максимизации поставьте разворачивание в оконном режиме и установку необходимого размера/положения. В помощь примеры работы с окнами "Window Manipulation Examples" с сайта http://www.peterssoftware.com/ Там много других интересных примеров.

Спасибо за ссылку, действительно пример работы с окном Аксеса очень познавательный. Буду изучать.
...
Рейтинг: 0 / 0
Управление формами
    #39299362
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOVА если убрать диалоговый режим, форма пропадает (то же что было и у меня при экспериментах).На, сделал чтобы перемещалось в Z-последовательности
...
Рейтинг: 0 / 0
Управление формами
    #39299365
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПанургGVOVА если убрать диалоговый режим, форма пропадает (то же что было и у меня при экспериментах).На, сделал чтобы перемещалось в Z-последовательности

О, вот это то что надо. Спасисбо!
...
Рейтинг: 0 / 0
Управление формами
    #39301273
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Продолжаю тестировать управление.
Добавились задачи:
1. Форма 2 имеет интерфейс разработанный под мониторы 800*600 (для совместимости с старыми компьютерами). При разворачивании будет применятся ресайзинг, но для проверки работы в минимальном (оригинальном) разрешении нужна возможность восстановления формы до 800*600.
2. Из формы 2 должны запускаться диалоговые формы.
3. Из формы 2 должны запускаться отчёты для просмотра, в диалоговом режиме развёрнутые на весь экран с возможностью только закрытия.

Проблемы в их решении:
1. Функцию реализовал, подкорректировав код открытия формы. Форма при восстановлении принимает нужный размер но вот восстанавливается она не по центру экрана. Как заставить её восстанавливаться по центру. При скрытом окне Аксеса я так понимаю что свойства формы "По центру" не работают и положение нужно высчитывать программно?
2. Функцию реализовал но проблема такая же как и в предыдущей задаче.
3. Запускаю отчёт и потом разворачиваю его. Получается нормально, но проблема в том что убрать кнопки размера окна безболезненно не получается. Если их убираю, оставляя саму кнопку закрытия то отчёт начинает запускаться на всю рабочую область экрана перекрывая панель задач а это неудобно. Если оставить одну только кнопку развёртывания то при сворачивании (которое и само по себе в принципе не желательно) отчёт часто восстанавливается в верхнем угле.

Программу прилагаю. Если кто может, помогите решить проблемные вопросы.
...
Рейтинг: 0 / 0
Управление формами
    #39301325
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOVинтерфейс разработанный под мониторы 800*600Что, реально? Остались работадтели-изверги у которых такие моники? Или книжек начитался?
...
Рейтинг: 0 / 0
Управление формами
    #39301335
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

Ошибся. 1024*768. И прямоугольник такой как будто в форме 2 нарисовал а написал глупость ;)
...
Рейтинг: 0 / 0
Управление формами
    #39301532
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Центрировать форму при восстановлении как будто научился, хотя сомневаюсь в правильности способа, к тому же тот способ не действует для центрирования диалоговой формы 3, то есть работает только при минимизированной форме а при восстановленной не действует. Ну и вышеописанную проблему отчёта побороть не удалось. Может кто подтолкнёт кв правильную сторону?
...
Рейтинг: 0 / 0
Управление формами
    #39303027
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь всё таки добиться нужного результата, даётся очень трудно. Центрировать формы на экране научился (хотя не очень то и точно по высоте, не по центру клиентской области а только по центру экрана, что не так красиво но лучше не получается).
Всплыла серьезная проблема с открытием диалогового окна и отчёта. Когда открыть с формы 2 диалоговое окно то выглядит как будто хорошо. Переход на другую задачу и назад с помощью Alt+Tab - нормальный. Но только стоит перейти на другую задачу с помощью щелчка мыши по панели задач и так же назад, диалоговое окно скрывается и показывается форма 2 которая недоступна. То же самое и с отчётом. Что я делаю не так? Помогите.
...
Рейтинг: 0 / 0
Управление формами
    #39303032
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV,
...
Рейтинг: 0 / 0
Управление формами
    #39303060
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

Большое спасибо за пример. В коде нашёл для себя много полезного. Позиционирования то что надо, но проблема с отчётом и диалоговым окном не решена.

Если запускаем диалоговое окно а потом мышкой переходим на другую программу то уже вернуться на него не получается а возвращаемся на форму 2 с которой оно было запущено и которая стает недоступной. Выход только в переключении Alt+Tab, до чего пользователи не додумаются.
С отчётом ещё хуже, потому как скрывается форма а при восстановлении отчёта, пользователь формы не видит, а только после его закрытия. Если форму не скрывать то отчёт всё равно при восстановлении спокойно теряет фокус, хотя он задумывался как диалоговое окно.
...
Рейтинг: 0 / 0
Управление формами
    #39303092
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И ещё как сделать чтобы формы 1 и 2 при открытии открывались в своём размере.
Код: vbnet
1.
2.
3.
4.
r = GetWorkArea
lngWinWidth = r.Right - r.Left
lngWinHeight = r.Bottom - r.Top
SetWindowPos Me.hwnd, 0&, CLng(lngWinWidth * 0.33), CLng(lngWinHeight * 0.33), CLng(lngWinWidth * 0.33), CLng(lngWinHeight * 0.33), SWP_SHOWWINDOW


Если в применяю SWP_NOSIZE то размер сохраняется тот что надо но теряется позиционирование по центру
...
Рейтинг: 0 / 0
Управление формами
    #39303155
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOVИ ещё как сделать чтобы формы 1 и 2 при открытии открывались в своём размере.Ты же хотел масштабирования? Вот и вычисляй коэффициент сам...

GVOVЕсли в применяю SWP_NOSIZE то размер сохраняется тот что надо но теряется позиционирование по центруА это зачем? -O Изменение размеров делаются специально!

GVOVС отчётом ещё хуже, потому как скрывается форма а при восстановлении отчёта, пользователь формы не видит, а только после его закрытия. Если форму не скрывать то отчёт всё равно при восстановлении спокойно теряет фокус, хотя он задумывался как диалоговое окно.Зачем тебе форма, если отчёт должен быть диалоговым? Вот и убрали форму, такая реализация диалогового окна. Можно конечно намертво его прибить сверху и оно всегда будет выше всех окон.

Вот тебе диалоговое окно...
...
Рейтинг: 0 / 0
Управление формами
    #39303171
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Масштабирование это я думал на будущее и касается оно только контролов в форме, а вот сами формы должны запускаться в своем размере (особенно форма 1) ... масштабирование буду делать для содержимого формы 2при её разворачивании.

Отчёт то висит выше всех окон но теряет фокус при переходе на форму 2. А хочется чтобы он не давал перейти назад на форму 2 пока его не закроют. Может я не правильно выразился в терминах.
...
Рейтинг: 0 / 0
Управление формами
    #39303175
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПанургЗачем тебе форма, если отчёт должен быть диалоговым? Вот и убрали форму, такая реализация диалогового окна.


Кроме диалогового отчёта есть и диалоговая форма 3 то принцип этих двух диалогов хочется чтобы было одинаковым за разницей того что отчёт запускается на всю рабочую область. Но пользователь ведь может его и восстановить.
...
Рейтинг: 0 / 0
Управление формами
    #39303187
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне хочется добиться вот такого (Программа5). Тут всё работает как и задумывалось и размеры правильные и формы не надо скрывыать и разворачивание и восстановление формы то что надо и отчёт ведёт себя неплохо (как и сейчас работает в рабочем проекте) но... некрасивая минимизация (из за чего и затеял всё это). А если прятать окно аксеса по другому (как в примерах выше) то минимизация начинает работать нормально но формы и отчёт не держат фокуса (или модальности не знаю как правильно сказать) и их надо скрывать или открывать со своими кнопками на панеле задач.
Можно ли что-то сделать чтобы всё работало как в примере (Программа5) но ещё и минимизировалось на панель задач как в примерах выше? Или это в принципе не совместимые желания.
...
Рейтинг: 0 / 0
Управление формами
    #39303286
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может сделать кнопку которая будет минимизировать всё приложение Access, если так можно? А кнопки минимизации ан формах тогда можно отключить?
...
Рейтинг: 0 / 0
Управление формами
    #39303394
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV,
...
Рейтинг: 0 / 0
Управление формами
    #39303525
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV, сегодня попробовал на другой системе и Office (WinXP & Access 2003) - поправил. Предыдущий пример делал под другой системой и Office (Win7 64 & Access 2010 32). Надеюсь крайний пример будет одинаково вести себя в разных системах...
...
Рейтинг: 0 / 0
Управление формами
    #39304750
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,
Спасибо. Как будто всё работает ка как надо но при запуске отчёта через раз повисает аксес так что можно завершить только через диспетчер задач. Может можно решить задачу с отчётом каким другим методом?
...
Рейтинг: 0 / 0
Управление формами
    #39304787
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV, а ты не запускай отчёт с открытым IDE VBA. И всё.
...
Рейтинг: 0 / 0
Управление формами
    #39304826
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

А, хорошо. Тогда всё работает!
...
Рейтинг: 0 / 0
Управление формами
    #39304838
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панурга ты не запускай отчёт с открытым IDE VBA. И всё
Решение с изменением атрибутов главного окна на невидимый работает хорошо, но, насколько я понимаю, до первой необработанной ошибки. Пользователь остается в конечном итоге с пустым экраном, не имея возможности ни запустить приложение по новой, ни прибить старое приложение без использования диспетчера задач, что может ввести в ступор неопытного пользователя. Поэтому я и не использую этот метод, а прячу главное окно за рабочим, синхронно минимизируя, максимизируя и перемещая/меняя размер вслед за рабочим. Несколько костыльно, но это не приведет к взрыву мозга у пользователя :)
...
Рейтинг: 0 / 0
Управление формами
    #39304867
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати хотел сказать то же самое. Потому как столкнулся с этим. Режим отладки используется постоянно и будет жутко неудобно. Сам думал с перемещением окнааксеса за рабочим окном чтобы всегда его держать по центру открытой формы. Тогда как будто упрощается запуск диалоговых окон и всего остального.
Не подскажете каким кодом можно реализовать перемещение окна при перемещении формы?
И как в этом методе с минимизацией на панель задач?
...
Рейтинг: 0 / 0
Управление формами
    #39304883
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShin, ты предлагаешь мне написать базу полностью?
...
Рейтинг: 0 / 0
Управление формами
    #39304888
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOVКстати хотел сказать то же самое. Потому как столкнулся с этим. Режим отладки используется постоянно и будет жутко неудобно.Ты постоянно отлаживаешь отчёты? Проблема только при запущенном отчёте. На время отладки можно и отключить сабклассинг окна, в конце концов.
...
Рейтинг: 0 / 0
Управление формами
    #39304915
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панургты предлагаешь мне написать базу полностью?
Боже упаси! :) Я просто обозначил потенциальную проблему. Ее наличие не означает, что решение со скрытием окна не подойдет для частных случаев, а уж что использовать - решать автору базы.
...
Рейтинг: 0 / 0
Управление формами
    #39305489
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

Не часто, но отчетов в базе много и держать в голове отключение и подключение мешает. Буду пробовать что-то попроще.
...
Рейтинг: 0 / 0
Управление формами
    #39305494
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В принципе база работает без отлаженного механизма скрытия окна. Была задумка сделать всё то же но с минимизацией, но только если это создаст дополнительные удобства для пользователей и не создаст потенциальных проблем. Из процесса поиска решения в этом топике я для себя взял позиционирование форм и задание точного размера при сворачивании-разворачивании вообще без усложнения работы (за что большая благодарность). Но вот добавление свертывания уже порядком усложняет.

А вообще нет такого способа чтобы как то просто перехватывать событие минимизации (когда форма падает в левый нижний край экрана и минимизировать все окно аксеса) а при активации этого окна автоматически восстанавливать свернутую форму (хотя она и так наверное восстановится)? То есть проблема только в первом.
...
Рейтинг: 0 / 0
Управление формами
    #39305555
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Итого сформировался окончательный вариант отвечающий всем условиям удобства и простоты (кроме свёртывания). Если не удастся перехватить событие минимизации как написано выше, то придётся просто отключить кнопки минимизации и лишить пользователей такой возможности. Остальное всё работает просто и удобно как для пользования так и для отладки.
...
Рейтинг: 0 / 0
Управление формами
    #39305568
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOVПанург,

Не часто, но отчетов в базе много и держать в голове отключение и подключение мешает. Буду пробовать что-то попроще.Что проще чем условная компиляция? Обрамляешь код условием
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Sub...
...'текст программы
#If not Debugging then
'тут код который требует отключения
#End If
...'продолжение текста программы
End Sub


А в общем модуле объявляешь
Код: vbnet
1.
#Const Debugging = -1'код не исполняется или 0-наоборот

или как на картинке. Причём значение константы в свойствах проекта по приоритету выше, если константа объявлена обоими способами сразу.
Таким образом меняешь значение этой константы и все участки кода перекрытые условным компилированием либо будут, либо не будут компилироваться и исполнятся в зависимости от значения этой константы.
...
Рейтинг: 0 / 0
Управление формами
    #39305614
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знал такого. Попробую использовать.
...
Рейтинг: 0 / 0
Управление формами
    #39305623
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,
В вашем крайнем примере. Запускаем форму 1 - на панели задач Форма 1, нормально. Дальше запускаем форму 2 - на панели форма 2, форма 1 скрывается, нормально. Запускаем отчет - на панели появляется две кнопки: Форма 1 - активная и отчёт. Хотя все формы скрыты. Отчёт постоянно неактивный (судя по виду и панели задач), хотя всегда вверху и под ним ничего нет (хотя пользователи видят на панели кнопку формы 1 по которой в форму 1 перейти нельзя). В принципе все работает но как то не логично выглядит. Логично если окно на экране и кнопка соответствуют друг другу и активны или на панели всегда одна кнопка которая активизирует самое верхнее окно программы.
...
Рейтинг: 0 / 0
Управление формами
    #39305669
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV, ты же вроде на своём остановился варианте?
...
Рейтинг: 0 / 0
Управление формами
    #39306177
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,
Остановка на одном из вариантов не значит прекращения работ по поиску лучших и более функциональных вариантов...
...
Рейтинг: 0 / 0
Управление формами
    #39306185
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

По варианту Программа_09.mdb возникли вопросы.
1. Форма 2 отличается от формы 1 и 3 вдавленной клиентской областью, как окно аксеса тогда как остальные формы этого эффекта не имеют. его можно устранить и на форме 2?
2. Несмотря на условную компиляцию при открытом окне VB открытие отчёта подвесило аксес и пришлось снимать задачу.
...
Рейтинг: 0 / 0
Управление формами
    #39306245
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV1. Форма 2 отличается от формы 1 и 3 вдавленной клиентской областью, как окно аксеса тогда как остальные формы этого эффекта не имеют. его можно устранить и на форме 2?Нет, это особенности отображения окна (границы). Даже если ты уберёшь весь код, ничего не изменится.

GVOV2. Несмотря на условную компиляцию при открытом окне VB открытие отчёта подвесило аксес и пришлось снимать задачу.Ну усовершенствуй процедуры перехвата сообщений окон. Тут есть примеры, в том числе с ассемблерными вставками.
...
Рейтинг: 0 / 0
Управление формами
    #39306250
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургНу усовершенствуй процедуры перехвата сообщений окон. Тут есть примеры, в том числе с ассемблерными вставками.
Ну вы и загнули TC с API не может разобраться, а вы ассемблер!
Вы сами то ассмемблерные вставки пользовали?
Прежде чем советовать думайте.
К стати я программировал на ассемблере и даже пытался делать вставки в VBA (ж.па полная)
Этот совет не для ТС ну и наверно не для вас.
С уважением.
...
Рейтинг: 0 / 0
Управление формами
    #39306255
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIК стати я программировал на ассемблере и даже пытался делать вставки в VBA Молодец, чо! Пирожок на полочке...
...
Рейтинг: 0 / 0
Управление формами
    #39306256
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI, С уважением.
...
Рейтинг: 0 / 0
Управление формами
    #39306280
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургТут есть примеры, в том числе с ассемблерными вставками.
А можно ссылочку? Поиском найти ничего, кроме трепа не удалось. Это, конечно, еще то извращение, даже если можно это делать недокументировано, интересно принципиальное наличие такой возможности без использования сторонних dll
...
Рейтинг: 0 / 0
Управление формами
    #39306297
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinПанургТут есть примеры, в том числе с ассемблерными вставками.
А можно ссылочку? Поиском найти ничего, кроме трепа не удалось. Это, конечно, еще то извращение, даже если можно это делать недокументировано, интересно принципиальное наличие такой возможности без использования сторонних dllПожалуйста - Прокрутка формы колесиком мыши
Посмотри и другие примеры этого мембера. Бенедикт правда и гостем иногда пишет
...
Рейтинг: 0 / 0
Управление формами
    #39306308
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinЭто, конечно, еще то извращение, даже если можно это делать недокументированоЯ так не считаю (вставки ассемблерные не использую). В Access есть множество недокументированных свойств и процедур, и если знаешь о них, то вполне себе можно использовать. Нет всего лишь гарантии, что в какой-либо версии их не отключат. Но перебираясь с версии на версию, иногда всё равно приходится в той или иной степени подправлять. Или не приходится...
...
Рейтинг: 0 / 0
Управление формами
    #39306312
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургПожалуйста - Прокрутка формы колесиком мыши
Нуу, это неинтересно :) просто выделяем память, даем ей разрешение на выполнение, заливаем туда машинные коды - какие же это ассемблерные вставки? Такой трюк можно сделать в любой среде, где есть возможность вызова API и запретить это нельзя, могут только поменять структуру памяти для пи-кода, понадобится коррекция заливаемого дампа.

Нормальные вставки выглядят так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
void __declspec(naked) main()
{
    // Naked functions must provide their own prolog...
    __asm {
        push ebp
        mov ebp, esp
        sub esp, __LOCAL_SIZE
    }

    // ... and epilog
    __asm {
        pop ebp
        ret
    }
}



Тем не менее, Панург, спасибо за ссылку, а товарищу Бенедикту - за код спасибо, вполне может пригодится.
...
Рейтинг: 0 / 0
Управление формами
    #39306315
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, понял что дальше углубляться не для меня, но и того что узнал уже достаточно для улучшения вида форм программы.
И хотелось услышать ответ на вопрос который уже звучал выше. Можно ли перехватывать событие минимизации формы и в этот момент минимизировать Access. Звучит как будто несложно но насколько сложным есть решение?
...
Рейтинг: 0 / 0
Управление формами
    #39306317
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinНуу, это неинтересноЧем богаты...

MrShinНормальные вставки выглядят такИ как ты себе представляешь это запускать?
...
Рейтинг: 0 / 0
Управление формами
    #39306324
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOVМожно ли перехватывать событие минимизации формы и в этот момент минимизировать Access
Элементарно. В событии Resize формы проверяешь, что с ней произошло. Для проверки на максимизацию и минимизацию есть API функции

Код: vbnet
1.
2.
    Public Declare Function IsZoomed Lib "user32" (ByVal hwnd As Long) As Integer
    Public Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Integer



В событии проверяем и делаем, что нужно:
If CBool(IsZoomed(Me.hwnd)) = True Then
'окно формы макиимизировано
funSetAccessWindow (SW_SHOWMAXIMIZED)
DoCmd.Maximize
ElseIf CBool(IsIconic(Me.hwnd)) = True Then
'окно формы минимизировано
funSetAccessWindow (SW_SHOWMINIMIZED)
Else
'просто окно
End If
...
Рейтинг: 0 / 0
Управление формами
    #39306330
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургROI, С уважением.
Да ладно проехали.
...
Рейтинг: 0 / 0
Управление формами
    #39306332
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургИ как ты себе представляешь это запускать?
Если язык поддерживает вставки, то способ запуска также встроен. В VBA пока не увидел даже недокументированного способа ассемблеронй вставки, только запуск произвольного кода из дампа.
Это я говорю только к тому, что способ, использованный Бенедиктом нельзя называть ассемблерной вставкой, эта технология называется по-другому. В общем, я домотался до термина :)
...
Рейтинг: 0 / 0
Управление формами
    #39306335
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я в свое время активно использовал ассемблерные вставки в Паскале и Дельфи, иногда удавалось прилично ускорить ответственные короткие куски кода.
...
Рейтинг: 0 / 0
Управление формами
    #39306342
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShin,
Спасибо, попробую.
...
Рейтинг: 0 / 0
Управление формами
    #39306347
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinЭлементарно. В событии Resize формы проверяешь, что с ней произошло.только у отчёта до 2007 нет такого события
...
Рейтинг: 0 / 0
Управление формами
    #39306352
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панургтолько у отчёта до 2007 нет такого события
Тогда по таймеру только опрашивать, похоже.
...
Рейтинг: 0 / 0
Управление формами
    #39306362
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinТогда по таймеру только опрашивать, похоже.Таймера там тоже нет...
...
Рейтинг: 0 / 0
Управление формами
    #39306367
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все события...
...
Рейтинг: 0 / 0
Управление формами
    #39306380
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, так это отчет! Не читал весь топик. Честно говоря, я бы не стал вешать отчет в воздухе без формы, по-моему это не очень хорошее решение. Не совсем представляю, зачем отчет может понадобиться в отдельном виде. В качестве превью перед печатью его вполне можно засунуть в форму, у которой есть либо меню, либо контролы для дальнейшей работы с превью отчета.
...
Рейтинг: 0 / 0
Управление формами
    #39306419
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinА, так это отчет! Не читал весь топик. Честно говоря, я бы не стал вешать отчет в воздухе без формы, по-моему это не очень хорошее решение. Не совсем представляю, зачем отчет может понадобиться в отдельном виде. В качестве превью перед печатью его вполне можно засунуть в форму, у которой есть либо меню, либо контролы для дальнейшей работы с превью отчета.В Access (по крайней мере до 2007 включительно) отчёт невозможно поместить на форму.
...
Рейтинг: 0 / 0
Управление формами
    #39306420
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinНе совсем представляю, зачем отчет может понадобиться в отдельном виде.ТЗ такое.
...
Рейтинг: 0 / 0
Управление формами
    #39306468
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургВ Access (по крайней мере до 2007 включительно) отчёт невозможно поместить на форму.
Шах и мат :)

И как же я с Акцесс 97 и 2000 раньше работал? Кошмар :)
...
Рейтинг: 0 / 0
Управление формами
    #39306475
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinШах и мат :)Так не интересно.
...
Рейтинг: 0 / 0
Управление формами
    #39306498
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Панург]MrShinВ Access (по крайней мере до 2007 включительно) отчёт невозможно поместить на форму.

А с какой целью отчёт размещают на форме?
...
Рейтинг: 0 / 0
Управление формами
    #39306595
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58, отвечу вопросом. Кто размещает?
...
Рейтинг: 0 / 0
Управление формами
    #39306855
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПанургMrShinНе совсем представляю, зачем отчет может понадобиться в отдельном виде.ТЗ такое.
Не совсем. Просто надо чтобы программа сворачивалсь на панель задач и имела там одну кнопку. А отдельный отчет это как вариант решения, который попадает в эти условия. Но я за то чтобы все формы были видны но на панели была одна кнопка. Это не сложно делается само по себе но... вместе со сворачиваемостью привело к таким вот спорным решениям.
Хотя программу когда отчёт или диалоговое окно наверху сворачивать не обязательно. Главное чтобы программа сворачивалась когда она в режиме первой и второй формы.
...
Рейтинг: 0 / 0
Управление формами
    #39306932
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShinGVOVМожно ли перехватывать событие минимизации формы и в этот момент минимизировать Access
Элементарно. В событии Resize формы проверяешь, что с ней произошло. Для проверки на максимизацию и минимизацию есть API функции

Код: vbnet
1.
2.
    Public Declare Function IsZoomed Lib "user32" (ByVal hwnd As Long) As Integer
    Public Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Integer



В событии проверяем и делаем, что нужно:
If CBool(IsZoomed(Me.hwnd)) = True Then
'окно формы макиимизировано
funSetAccessWindow (SW_SHOWMAXIMIZED)
DoCmd.Maximize
ElseIf CBool(IsIconic(Me.hwnd)) = True Then
'окно формы минимизировано
funSetAccessWindow (SW_SHOWMINIMIZED)
Else
'просто окно
End If
Согласно предложению попытался навесить на рабочий проект на форму 1 программные коды найденные в сети но в результате форма 1 свёртывается с окном акса (как и надо) но вот назад не возвращается. Всё остальное работает просто и надёжно как и хотелось, но вот с минимизацией никак.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Управление формами
    #39942407
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите почему когда закрываю форму (в прикрепленном файле) и пытаюсь перейти в редактирование кода то он открывается за окном Accessa и чтобы его увидеть надо каждый раз минимизировать окно Access.
...
Рейтинг: 0 / 0
Управление формами
    #39942408
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV,
HWND_TOPMOST - Помещает окно перед не самыми верхними окнами. Окно сохраняет свою самую верхнюю позицию даже тогда, когда оно неактивное.
Код: vbnet
1.
2.
3.
4.
Public Function hidde_off()
On Error Resume Next
SetWindowPos Application.hWndAccessApp, HWND_TOPMOST, 0, 0, 1200, 1200, SWP_SHOWWINDOW
End Function

...
Рейтинг: 0 / 0
Управление формами
    #39942425
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV, форма имеет свойство modal=true, которое применяется для вызова диалоговых окон соответственно всегда поверх других окон и до закрытия останавливает действие кода, запущенного вне этого окна. Нужно сделать modal=false.
...
Рейтинг: 0 / 0
Управление формами
    #39942516
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! С этим разобрался.
...
Рейтинг: 0 / 0
Управление формами
    #39942521
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите еще один момент.
Если я перетаскиваю формы и модуль из программы Программа_01.mdb в новую базу и в параметрах запуска ставлю Форма1 (в прикрепленном файле). То при запуске окно Access остается видимым. Хотя в программе Программа_01.mdb форма запускается со скрытым окном. Что надо еще сделать в новой базе чтобы окно Access запускалось скрытым?
...
Рейтинг: 0 / 0
Управление формами
    #39942532
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GVOV
Подскажите еще один момент.
Если я перетаскиваю формы и модуль из программы Программа_01.mdb в новую базу и в параметрах запуска ставлю Форма1 (в прикрепленном файле). То при запуске окно Access остается видимым. Хотя в программе Программа_01.mdb форма запускается со скрытым окном. Что надо еще сделать в новой базе чтобы окно Access запускалось скрытым?

11447423
...
Рейтинг: 0 / 0
Управление формами
    #39942534
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GVOV,
...
Рейтинг: 0 / 0
Управление формами
    #39942582
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon
GVOV,


Ну а как же скрывается при запуске окно в программе Программа_01.mdb без использования функции hidde_on?
...
Рейтинг: 0 / 0
Управление формами
    #39942610
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon


Ваш вариант не позволяет минимизировать форму на панель задач. Поэтому вопрос остается актуальным.
...
Рейтинг: 0 / 0
Управление формами
    #39942623
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дошло!!!
Там был макрос AutoExec, который запускал hidde_on.
Этот вопрос тоже решен!
...
Рейтинг: 0 / 0
Управление формами
    #39942658
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот бы еще решить вопрос с "красивым" восстановлением окна по функции hidde_on. Она восстанавливает с указанным размером (в примере 1200 на 1200). А как можно высчитать реальную рабочую область окна чтобы после восстановления окна не приходилось два раза жать на кнопку восстановления /разворачивания чтобы оно заняло всю рабочую область? Или это очень сложно?
...
Рейтинг: 0 / 0
Управление формами
    #39942664
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GVOV
Вот бы еще решить вопрос с "красивым" восстановлением окна по функции hidde_on. Она восстанавливает с указанным размером (в примере 1200 на 1200). А как можно высчитать реальную рабочую область окна чтобы после восстановления окна не приходилось два раза жать на кнопку восстановления /разворачивания чтобы оно заняло всю рабочую область? Или это очень сложно?
...
Рейтинг: 0 / 0
Управление формами
    #39942711
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon
GVOV
Вот бы еще решить вопрос с "красивым" восстановлением окна по функции hidde_on. Она восстанавливает с указанным размером (в примере 1200 на 1200). А как можно высчитать реальную рабочую область окна чтобы после восстановления окна не приходилось два раза жать на кнопку восстановления /разворачивания чтобы оно заняло всю рабочую область? Или это очень сложно?


Извиняюсь, вопрос был о восстановлении окна Access после закрытия (функция hidde_off).
То есть если закрыть Форму 1 то чтобы окно Access восстановилось на весь экран (максимизировалось) чтобы не делать это каждый раз вручную (после пробных запусков). На работоспособность программы не влияет но все же...
...
Рейтинг: 0 / 0
Управление формами
    #39942725
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GVOV
zimkon
пропущено...


Извиняюсь, вопрос был о восстановлении окна Access после закрытия (функция hidde_off).
То есть если закрыть Форму 1 то чтобы окно Access восстановилось на весь экран (максимизировалось) чтобы не делать это каждый раз вручную (после пробных запусков). На работоспособность программы не влияет но все же...
...
Рейтинг: 0 / 0
Управление формами
    #39942726
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon,

Но окно Accessa остается 1200 на 1200 точек. Как раз его размер и нужно изменить в соответствии с рабочей областью рабочего стола
...
Рейтинг: 0 / 0
Управление формами
    #39942727
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GVOV
zimkon,

Но окно Accessa остается 1200 на 1200 точек. Как раз его размер и нужно изменить в соответствии с рабочей областью рабочего стола

"Гранаты у тебя не той системы" © WinXP, Access 2003 у мну
...
Рейтинг: 0 / 0
Управление формами
    #39942732
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV, не очень понятно зачем, но всё же
...
Рейтинг: 0 / 0
Управление формами
    #39942855
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург
GVOV, не очень понятно зачем, но всё же


Отличное решение!

Зачем? При разработке/отладке, когда отключено автоматическое закрытие Accessa часто запускаю программу и после закрытия потом руками восстанавливаю окна. Через несколько лет, начало задалбывать :) А сейчас решил поработать не только над удобством пользователей а и над своим. Теперь станет намного удобнее!
...
Рейтинг: 0 / 0
Управление формами
    #39952661
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опять прошу помощи.
В программе есть Форма3 которая есть диалоговой формой. Она может запускаться с Формы1 и Формы2. Отображением её на верху при переходе в программу с других программ по щелчку на панели задач, я так понимаю, занимается таймер Формы3.
И всё работает так как надо. Но для задач Формы3 потребовался таймер (в примере я просто отключил его активацию при открытии). И теперь при переходе на программу через панель задач при запущенной Форме3 активируется вызвавшая её форма а не сама Форма 3 которая в это время должна быть вверху.
Вопрос. Можно вернуть функционал отображения Формы3 вверху при переходе на программу через панель задач не используя её таймер?
...
Рейтинг: 0 / 0
Управление формами
    #39952666
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV
Отображением её на верху при переходе в программу с других программ по щелчку на панели задач, я так понимаю, занимается таймер Формы3 .
я такого не делал в представленных мной примерах...

Вот возможное решение (см пример). Комментарий дан в в модуле формы "Форма2"
...
Рейтинг: 0 / 0
Управление формами
    #39952913
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург
GVOV
Отображением её на верху при переходе в программу с других программ по щелчку на панели задач, я так понимаю, занимается таймер Формы3 .
я такого не делал в представленных мной примерах...

Вот возможное решение (см пример). Комментарий дан в в модуле формы "Форма2"


Да возможно те методы решения предложены были другими пользователями.
Применил Ваше решение. Работает нормально, побочных эффектов пока не замечено.
Спасибо за помощь!
...
Рейтинг: 0 / 0
Управление формами
    #39960064
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На тестовой форме (на форме 2) добавил кнопку которая открывает MSWord. В WinXP все нормально открывается а вот в Win7 и Win10 MSWord открывается на заднем плане. В принципе ничего критичного но малость неудобно пользователю который хочет чтобы документ открывался сверху.
Подскажите это связано с специфической передачей фокуса между формами или я не правильно открываю ворд? И можно ли все таки в Win7 и Win10 вывести окно автоматически наперед хотя бы насильно.
...
Рейтинг: 0 / 0
Управление формами
    #39960088
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV
вывести окно автоматически наперед хотя бы насильно

формирую и закрываю в невидимом режиме
затем повторно открываю через shell "winword.exe c:\temp\dog15.docx",maximum
в строчке могут быть ошибки -набирала прямо в сообщении
...
Рейтинг: 0 / 0
Управление формами
    #39960096
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV,
уточнение
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub Кнопка11_Click()
Dim WordApp As Object
Dim wordDoc As Object
Set WordApp = CreateObject("Word.Application")
Set wordDoc = WordApp.Application.Documents.Add(, , , True)
WordApp.Application.Visible = False ''''
wordDoc.paragraphs(1).range.Text = "www"
wordDoc.saveas "c:\temp\wrem2.docx"
WordApp.Quit True
Set wordDoc = Nothing
Set WordApp = Nothing
Shell "winword.exe c:\temp\wrem2.docx", vbMaximizedFocus
End Sub
...
Рейтинг: 0 / 0
Управление формами
    #39960123
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА
GVOV,
уточнение


Тут вижу сохранение документа. Очень хотелось бы обойтись без него.
...
Рейтинг: 0 / 0
Управление формами
    #39960124
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GVOV,
После сохранения и повторного открытия есть свои проблемы.
Если пользователь захочет сохранить то документ сохранится в то место откуда я его открыл и это не удобно. А очень удобно когда при сохранении (первом) будет выведено окно сохранения где пользователь выберет куда ему сохранить документ.
...
Рейтинг: 0 / 0
Управление формами
    #39960127
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GVOV,

Посмотри тут 15789119
...
Рейтинг: 0 / 0
Управление формами
    #39960150
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon
GVOV,

Посмотри тут 15789119


Спасибо за наводку. Как будто помогло побороть окна ворда и екселя!
...
Рейтинг: 0 / 0
Управление формами
    #39960157
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV
Как будто помогло побороть окна ворда и екселя !
У Excel.Application есть метод ActivateMicrosoftApp
...
Рейтинг: 0 / 0
Управление формами
    #39960158
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV,
Тук-тук
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
'Module1
#If VBA7 Then
 ...
    Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
#Else
 ...
    Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#End If



'в модуле формы
Private Sub Кнопка11_Click()
Dim WordApp As Object

Set WordApp = CreateObject("Word.Application")
WordApp.Application.Documents.Add , , , True
WordApp.Application.Visible = True
SetForegroundWindow FindWindow("OpusApp", WordApp.Application.ActiveDocument.Name & " - " & WordApp.Application.Caption)
End Sub

...
Рейтинг: 0 / 0
Управление формами
    #39965209
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В боевом применении управление формами работает отлично, каких либо проблем не наблюдается, пользователи довольны.
Но вылез один (а точнее два) неприятных косяка с MsgBox...

1. При открытии MsgBox он появляется как и надо наверху, но в панели задач появляется еще одна кнопка и если в этот момент нажать на панели задач первую кнопку приложения то вызывающая форма отобразится на экране в заблокированом режиме пока не переключишся на MsgBox и не закроешь его.
2. Если переходить с другого открытого окна на приложение с открытым MsgBox (на кнопкуMsgBox'а) то MsgBox отображается на фоне другого открытого окна а не приложения с которого оно возникло.

По большому счету эти косяки не критичны и проявляются только если этого захотеть но все равно несколько портят впечатление от, как до этого казалось, отлично работающего механизма управления формами.

Может можно как то устранить выявленный эффект?

Тест прилагаю.
...
Рейтинг: 0 / 0
Управление формами
    #39965212
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV
Может можно как то устранить выявленный эффект?
не пользуйся стандартным, сделай свой на основе окна диалога 3
...
Рейтинг: 0 / 0
Управление формами
    #39965289
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,
Вообще то логично... ;)
Буду двигаться в этом направлении!
...
Рейтинг: 0 / 0
Управление формами
    #39965504
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начал делать свой MsgBox и столкнулся с одной проблемой, обойти которую не могу.
Проблема высчитать высоту окна формы чтобы влезло сообщение. Стандартный MsgBox это всё делает автоматически а в моём случае я увеличиваю высоту поля и формы чтобы влез текст.
Но тексты бывают:
"Строка1" & "Строка 2" - вмещается в одну строку
"Строка1" & vbNewLine & vbNewLine & "Строка 2" - вмещается уже в три строки при одинаковом количестве символов.
Поэтому определить количество строк просто определив длину текста и разделив на количество символов в поле по ширине не получается.
Не могу даже придумать как определить есть ли в тексте vbNewLine
Для каждого сообщения высчитывать высоту эмпирическим путем и передавать в форму - кажется не очень правильно.

Может кто натолкнет в каком направлении двигаться?
...
Рейтинг: 0 / 0
Управление формами
    #39965516
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV, а сам искать не пробовал? всё на сто раз обговорено...

1. API DrawText
2. Access.WizHook. TwipsFromFont
...
Рейтинг: 0 / 0
Управление формами
    #39965839
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,
Пробовал, но по таким словам не додумался поискать. Спасибо, буду изучать...
...
Рейтинг: 0 / 0
Управление формами
    #40038194
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опять столкнулся с "неправильным" поведением форм настроить которое не могу.
Задача. Открыть форму 4.
Условие чтобы при активации приложения в любой момент времени выводилась последняя открытая форма вверху, в панели задач была одна вкладка приложения и не показывалось окно Access. Это условие в принципе было выполнено выше по топику.
1 случай - открыть прямо с формы 1. Открывается, функционирует нормально.
2 случай - открыть сначала форму 3 а потом с неё ту же форму 4. Открывается но функционирует неправильно. Переходы по ТАБ работают не на ней а на форме 3 с которой она открыта. Начинаю что-то менять в коде перестаёт выполняться условие, при активации приложения (при активации 4 форма не выводится наверху).
Помогите сделать так чтобы во 2 случае 4 форма работала корректно (переходы по ТАБ были на ней).
...
Рейтинг: 0 / 0
121 сообщений из 121, показаны все 5 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Управление формами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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