|
Управление формами
|
|||
---|---|---|---|
#18+
Имеется приложение которое при запуске выводит Форму 1 которая должна иметь некоторый размер, возможность передвигаться по экрану, минимизироваться на панель задач и восстанавливаться до своего фиксированного размера (вместе с окном Access потому как по другому минимизировать на панель задач не получается). Из этой формы открывается Форма 2 которая по умолчанию разворачивается на весь экран и тоже должна минимизироваться и восстанавливаться. При закрытии кнопкой закрытия Access Формы 2, она закрывается, передавая управление на Форму 1 а при её закрытии закрывается всё приложение. Всё это удалось реализовать более-менее нормально. Но осталась одна проблема. Как сделать чтобы невозможно было развернуть или изменить размеры Формы 1 а у Формы 2 эти возможности оставались. То есть в режиме когда на экране Форма 1, была не активна кнопка разворачивания окна и мышкой невозможно было вцепится для изменения размера формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 00:54 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOVкогда на экране Форма 1, была не активна кнопка разворачивания окна и мышкой невозможно было вцепится для изменения размера формы. Поменяйте тип границы окна с изменяемого на другой и отключите кнопки минимизации-максимизации в свойствах окна. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 04:52 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панург, Похожим вариантом для решения технического задания на данный момент пользуюсь и я но есть очень существенный недостаток из за которого и пытаюсь отказаться от скрытого окна Access. В вашем примере минусы: 1. Невозможно минимизировать формы на панель задач, в лучшем случае в левый нижний угол 2. Проблемы с максимизацией Формы 2. Она не держит весь экран, и надо или точно задавать размеры или будут варианты нежелательного восстановления при получении фокуса программы. Один плюс этого способа в том что получается более красивая рамка формы потому как окно самого Accessа имеет вдавленый контур. Но минусы в сравнении с этим огромные. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 11:24 |
|
Управление формами
|
|||
---|---|---|---|
#18+
MrShin, Ваше предложение не проходит из за того что в моём примере имеем дело не с окном формы а окном самого Accessa. В том то и задача чтобы это сделать с его окном. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 11:25 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV, я не стесняюсь Access и не пользуюсь скрытием окна приложения. Чего и тебе желаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 12:09 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV, да, остальное мелочи и решаемо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 12:10 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV2. Проблемы с максимизацией Формы 2. Она не держит весь экран, и надо или точно задавать размеры или будут варианты нежелательного восстановления при получении фокуса программы.С этим проблем в сделанном мной примере не обнаружил (только что посмотрел) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 12:21 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панург, Согласен на 100%. Я тоже не стесняюсь. Но со временем уже начинаю замечать эти мелочи. К примеру пользователь хочет скрыть программу чтобы временно перейти в другую. В принципе есть много способов это сделать и это не проблема, но я замечал что большинство пользователей моей программы лезут в правый верхний угол её свернуть (хотя можно минимизировать все окна или просто переключится в другую интересующую программу). Если не скрывать окно Access (а по факту у меня сейчас так и есть) то программа минимизируется в окне но рабочее пространство не очищается, потому как надо ещё минимизовать и сам Access, а это опять щёлкать, пользователи начинают нервничать и теряться (ну они не сильно продвинутые в таком деле). То же и при разворачивании. Почему так действуют пользователи трудно сказать, возможно потому что остальные программы таким образом отлично улетают на панель задач а потом так же красиво возвращаются. Из за этого и решил каким-то образом побороть это неудобство (конечно же оно не критическое но всё равно имеет своё влияние на субъективное восприятие программы) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 12:30 |
|
Управление формами
|
|||
---|---|---|---|
#18+
ПанургGVOV2. Проблемы с максимизацией Формы 2. Она не держит весь экран, и надо или точно задавать размеры или будут варианты нежелательного восстановления при получении фокуса программы.С этим проблем в сделанном мной примере не обнаружил (только что посмотрел) В вашем примере она принимает размер экрана но не минимизируется из за чего у меня чуточку вылазит за левую кромку монитора и немного перекрывает панель задач. Вин 7 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 12:32 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Поиском нашёл способ заблокировать изменение окна Access с помошью АРI но то ли криво прицепил (к сожалению в АРI не разбираюсь) то ли сам способ кривоватый но вылезли побочные эффекты. При запуске всё отлично. Форма стабильного размера и ведёт себя как и надо, минимизируется и восстанавливается как по кнопке минимизации так и по щелчку на панели задач. Но когда запустить Форму 2 то она почему то не максимизируется а опять таки принимает форму разрешения экрана. А когда её закрыть то у Формы 1 появляются проблемы с перемещением по экрану. Соответственно задача почти решена но появилась нестабильность поведения форм в процессе пользования ими. Как стабилизовать эти две формы чтобы их открытие- закрытие и перемещение первой происходило без посторонних эффектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 12:56 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOVВаше предложение не проходит из за того что в моём примере имеем дело не с окном формы а окном самого Accessa Ну и где было упоминание того, что речь идет об окне Акцесса, а не о Форме 1? Спрячьте окно Акцесса за формой 1. Я буквально на днях публиковал код для этого ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 19:49 |
|
Управление формами
|
|||
---|---|---|---|
#18+
MrShinGVOVВаше предложение не проходит из за того что в моём примере имеем дело не с окном формы а окном самого Accessa Ну и где было упоминание того, что речь идет об окне Акцесса, а не о Форме 1? Спрячьте окно Акцесса за формой 1. Я буквально на днях публиковал код для этого Об окне Акцесса было упоминание в первом посте. Прятать за формой 1 неплохая идея, надо бы попробовать, будут ли побочные эффекты. А в какой теме код, не подскажите? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 20:35 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Но как будет с минимизациями на панель задач если окно будет спрятано? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 20:37 |
|
Управление формами
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 21:44 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Вот так покрасивее будет: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 21:46 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Спасибо. Действительно так понятнее. Обьявлять API я не умею, но думаю, что с помощью поиска разберусь. Результат, если что получится, покажу. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2016, 21:49 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Пробовал осилить API. С трудом объявил все функции и запустил предложенный код, но наверное у меня не достаточно знаний так как при запуске приложения остаётся только на панели кнопка Access и больше ни чего (окно скрывается но и формы не видно). Попробую более точно сформулировать что хочется получить: 1. При запуске выводится форма 1 фиксированного размера с кнопкой минимизации. Свободно перемещается по экрану. 2. По нажатии кнопки минимизации формы или щелчке на панели задач она сворачивается на панель задач и по щелчку разворачивается. 3. Запускаем форму 2. Она разворачивается на весь экран и так же при щелчке на панели задач она сворачивается на панель задач и по щелчку разворачивается. 4. При закрытии формы 2 остаётся форма 1 со свойствами описанными пункте 1. Помогите, если не трудно, кто в этом лучше разбирается. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2016, 22:55 |
|
Управление формами
|
|||
---|---|---|---|
#18+
У меня в Form_Open стоит максимизация формы, для начала это добавьте, если заработает, то вместо максимизации поставьте разворачивание в оконном режиме и установку необходимого размера/положения. В помощь примеры работы с окнами "Window Manipulation Examples" с сайта http://www.peterssoftware.com/ Там много других интересных примеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 05:38 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV, потестируй. У меня вроде работает на 2003 2007 как ты просил. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 08:21 |
|
Управление формами
|
|||
---|---|---|---|
#18+
ПанургGVOV, потестируй. У меня вроде работает на 2003 2007 как ты просил. Всё почти так как хотелось за исключением того что формы запускаются в режиме диалогового окна и убрать с экрана их можно только минимизировав (согласен это как и просилось) но перключится в другую програму с помощью панели задач или Alt+Tab не получается, форма всё равно висит сверху. А если убрать диалоговый режим, форма пропадает (то же что было и у меня при экспериментах). Это можно как то решить оставив этот механизм скрытия окна? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 09:41 |
|
Управление формами
|
|||
---|---|---|---|
#18+
MrShinУ меня в Form_Open стоит максимизация формы, для начала это добавьте, если заработает, то вместо максимизации поставьте разворачивание в оконном режиме и установку необходимого размера/положения. В помощь примеры работы с окнами "Window Manipulation Examples" с сайта http://www.peterssoftware.com/ Там много других интересных примеров. Спасибо за ссылку, действительно пример работы с окном Аксеса очень познавательный. Буду изучать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 09:45 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOVА если убрать диалоговый режим, форма пропадает (то же что было и у меня при экспериментах).На, сделал чтобы перемещалось в Z-последовательности ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 09:50 |
|
Управление формами
|
|||
---|---|---|---|
#18+
ПанургGVOVА если убрать диалоговый режим, форма пропадает (то же что было и у меня при экспериментах).На, сделал чтобы перемещалось в Z-последовательности О, вот это то что надо. Спасисбо! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2016, 09:54 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Продолжаю тестировать управление. Добавились задачи: 1. Форма 2 имеет интерфейс разработанный под мониторы 800*600 (для совместимости с старыми компьютерами). При разворачивании будет применятся ресайзинг, но для проверки работы в минимальном (оригинальном) разрешении нужна возможность восстановления формы до 800*600. 2. Из формы 2 должны запускаться диалоговые формы. 3. Из формы 2 должны запускаться отчёты для просмотра, в диалоговом режиме развёрнутые на весь экран с возможностью только закрытия. Проблемы в их решении: 1. Функцию реализовал, подкорректировав код открытия формы. Форма при восстановлении принимает нужный размер но вот восстанавливается она не по центру экрана. Как заставить её восстанавливаться по центру. При скрытом окне Аксеса я так понимаю что свойства формы "По центру" не работают и положение нужно высчитывать программно? 2. Функцию реализовал но проблема такая же как и в предыдущей задаче. 3. Запускаю отчёт и потом разворачиваю его. Получается нормально, но проблема в том что убрать кнопки размера окна безболезненно не получается. Если их убираю, оставляя саму кнопку закрытия то отчёт начинает запускаться на всю рабочую область экрана перекрывая панель задач а это неудобно. Если оставить одну только кнопку развёртывания то при сворачивании (которое и само по себе в принципе не желательно) отчёт часто восстанавливается в верхнем угле. Программу прилагаю. Если кто может, помогите решить проблемные вопросы. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 16:26 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOVинтерфейс разработанный под мониторы 800*600Что, реально? Остались работадтели-изверги у которых такие моники? Или книжек начитался? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 17:00 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панург, Ошибся. 1024*768. И прямоугольник такой как будто в форме 2 нарисовал а написал глупость ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 17:15 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Центрировать форму при восстановлении как будто научился, хотя сомневаюсь в правильности способа, к тому же тот способ не действует для центрирования диалоговой формы 3, то есть работает только при минимизированной форме а при восстановленной не действует. Ну и вышеописанную проблему отчёта побороть не удалось. Может кто подтолкнёт кв правильную сторону? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2016, 22:39 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Пытаюсь всё таки добиться нужного результата, даётся очень трудно. Центрировать формы на экране научился (хотя не очень то и точно по высоте, не по центру клиентской области а только по центру экрана, что не так красиво но лучше не получается). Всплыла серьезная проблема с открытием диалогового окна и отчёта. Когда открыть с формы 2 диалоговое окно то выглядит как будто хорошо. Переход на другую задачу и назад с помощью Alt+Tab - нормальный. Но только стоит перейти на другую задачу с помощью щелчка мыши по панели задач и так же назад, диалоговое окно скрывается и показывается форма 2 которая недоступна. То же самое и с отчётом. Что я делаю не так? Помогите. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2016, 01:56 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панург, Большое спасибо за пример. В коде нашёл для себя много полезного. Позиционирования то что надо, но проблема с отчётом и диалоговым окном не решена. Если запускаем диалоговое окно а потом мышкой переходим на другую программу то уже вернуться на него не получается а возвращаемся на форму 2 с которой оно было запущено и которая стает недоступной. Выход только в переключении Alt+Tab, до чего пользователи не додумаются. С отчётом ещё хуже, потому как скрывается форма а при восстановлении отчёта, пользователь формы не видит, а только после его закрытия. Если форму не скрывать то отчёт всё равно при восстановлении спокойно теряет фокус, хотя он задумывался как диалоговое окно. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2016, 10:56 |
|
Управление формами
|
|||
---|---|---|---|
#18+
И ещё как сделать чтобы формы 1 и 2 при открытии открывались в своём размере. Код: vbnet 1. 2. 3. 4.
Если в применяю SWP_NOSIZE то размер сохраняется тот что надо но теряется позиционирование по центру ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2016, 12:09 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOVИ ещё как сделать чтобы формы 1 и 2 при открытии открывались в своём размере.Ты же хотел масштабирования? Вот и вычисляй коэффициент сам... GVOVЕсли в применяю SWP_NOSIZE то размер сохраняется тот что надо но теряется позиционирование по центруА это зачем? -O Изменение размеров делаются специально! GVOVС отчётом ещё хуже, потому как скрывается форма а при восстановлении отчёта, пользователь формы не видит, а только после его закрытия. Если форму не скрывать то отчёт всё равно при восстановлении спокойно теряет фокус, хотя он задумывался как диалоговое окно.Зачем тебе форма, если отчёт должен быть диалоговым? Вот и убрали форму, такая реализация диалогового окна. Можно конечно намертво его прибить сверху и оно всегда будет выше всех окон. Вот тебе диалоговое окно... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2016, 15:24 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Масштабирование это я думал на будущее и касается оно только контролов в форме, а вот сами формы должны запускаться в своем размере (особенно форма 1) ... масштабирование буду делать для содержимого формы 2при её разворачивании. Отчёт то висит выше всех окон но теряет фокус при переходе на форму 2. А хочется чтобы он не давал перейти назад на форму 2 пока его не закроют. Может я не правильно выразился в терминах. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2016, 16:09 |
|
Управление формами
|
|||
---|---|---|---|
#18+
ПанургЗачем тебе форма, если отчёт должен быть диалоговым? Вот и убрали форму, такая реализация диалогового окна. Кроме диалогового отчёта есть и диалоговая форма 3 то принцип этих двух диалогов хочется чтобы было одинаковым за разницей того что отчёт запускается на всю рабочую область. Но пользователь ведь может его и восстановить. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2016, 16:24 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Мне хочется добиться вот такого (Программа5). Тут всё работает как и задумывалось и размеры правильные и формы не надо скрывыать и разворачивание и восстановление формы то что надо и отчёт ведёт себя неплохо (как и сейчас работает в рабочем проекте) но... некрасивая минимизация (из за чего и затеял всё это). А если прятать окно аксеса по другому (как в примерах выше) то минимизация начинает работать нормально но формы и отчёт не держат фокуса (или модальности не знаю как правильно сказать) и их надо скрывать или открывать со своими кнопками на панеле задач. Можно ли что-то сделать чтобы всё работало как в примере (Программа5) но ещё и минимизировалось на панель задач как в примерах выше? Или это в принципе не совместимые желания. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2016, 17:12 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Может сделать кнопку которая будет минимизировать всё приложение Access, если так можно? А кнопки минимизации ан формах тогда можно отключить? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2016, 22:17 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV, сегодня попробовал на другой системе и Office (WinXP & Access 2003) - поправил. Предыдущий пример делал под другой системой и Office (Win7 64 & Access 2010 32). Надеюсь крайний пример будет одинаково вести себя в разных системах... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2016, 05:08 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панург, Спасибо. Как будто всё работает ка как надо но при запуске отчёта через раз повисает аксес так что можно завершить только через диспетчер задач. Может можно решить задачу с отчётом каким другим методом? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2016, 22:39 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV, а ты не запускай отчёт с открытым IDE VBA. И всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2016, 03:40 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панург, А, хорошо. Тогда всё работает! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2016, 08:26 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панурга ты не запускай отчёт с открытым IDE VBA. И всё Решение с изменением атрибутов главного окна на невидимый работает хорошо, но, насколько я понимаю, до первой необработанной ошибки. Пользователь остается в конечном итоге с пустым экраном, не имея возможности ни запустить приложение по новой, ни прибить старое приложение без использования диспетчера задач, что может ввести в ступор неопытного пользователя. Поэтому я и не использую этот метод, а прячу главное окно за рабочим, синхронно минимизируя, максимизируя и перемещая/меняя размер вслед за рабочим. Несколько костыльно, но это не приведет к взрыву мозга у пользователя :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2016, 08:56 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Кстати хотел сказать то же самое. Потому как столкнулся с этим. Режим отладки используется постоянно и будет жутко неудобно. Сам думал с перемещением окнааксеса за рабочим окном чтобы всегда его держать по центру открытой формы. Тогда как будто упрощается запуск диалоговых окон и всего остального. Не подскажете каким кодом можно реализовать перемещение окна при перемещении формы? И как в этом методе с минимизацией на панель задач? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2016, 09:20 |
|
Управление формами
|
|||
---|---|---|---|
#18+
MrShin, ты предлагаешь мне написать базу полностью? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2016, 09:36 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOVКстати хотел сказать то же самое. Потому как столкнулся с этим. Режим отладки используется постоянно и будет жутко неудобно.Ты постоянно отлаживаешь отчёты? Проблема только при запущенном отчёте. На время отладки можно и отключить сабклассинг окна, в конце концов. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2016, 09:40 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панургты предлагаешь мне написать базу полностью? Боже упаси! :) Я просто обозначил потенциальную проблему. Ее наличие не означает, что решение со скрытием окна не подойдет для частных случаев, а уж что использовать - решать автору базы. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2016, 10:07 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панург, Не часто, но отчетов в базе много и держать в голове отключение и подключение мешает. Буду пробовать что-то попроще. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2016, 20:38 |
|
Управление формами
|
|||
---|---|---|---|
#18+
В принципе база работает без отлаженного механизма скрытия окна. Была задумка сделать всё то же но с минимизацией, но только если это создаст дополнительные удобства для пользователей и не создаст потенциальных проблем. Из процесса поиска решения в этом топике я для себя взял позиционирование форм и задание точного размера при сворачивании-разворачивании вообще без усложнения работы (за что большая благодарность). Но вот добавление свертывания уже порядком усложняет. А вообще нет такого способа чтобы как то просто перехватывать событие минимизации (когда форма падает в левый нижний край экрана и минимизировать все окно аксеса) а при активации этого окна автоматически восстанавливать свернутую форму (хотя она и так наверное восстановится)? То есть проблема только в первом. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2016, 20:47 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Итого сформировался окончательный вариант отвечающий всем условиям удобства и простоты (кроме свёртывания). Если не удастся перехватить событие минимизации как написано выше, то придётся просто отключить кнопки минимизации и лишить пользователей такой возможности. Остальное всё работает просто и удобно как для пользования так и для отладки. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 01:02 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOVПанург, Не часто, но отчетов в базе много и держать в голове отключение и подключение мешает. Буду пробовать что-то попроще.Что проще чем условная компиляция? Обрамляешь код условием Код: vbnet 1. 2. 3. 4. 5. 6. 7.
А в общем модуле объявляешь Код: vbnet 1.
или как на картинке. Причём значение константы в свойствах проекта по приоритету выше, если константа объявлена обоими способами сразу. Таким образом меняешь значение этой константы и все участки кода перекрытые условным компилированием либо будут, либо не будут компилироваться и исполнятся в зависимости от значения этой константы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 04:18 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Не знал такого. Попробую использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 08:12 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панург, В вашем крайнем примере. Запускаем форму 1 - на панели задач Форма 1, нормально. Дальше запускаем форму 2 - на панели форма 2, форма 1 скрывается, нормально. Запускаем отчет - на панели появляется две кнопки: Форма 1 - активная и отчёт. Хотя все формы скрыты. Отчёт постоянно неактивный (судя по виду и панели задач), хотя всегда вверху и под ним ничего нет (хотя пользователи видят на панели кнопку формы 1 по которой в форму 1 перейти нельзя). В принципе все работает но как то не логично выглядит. Логично если окно на экране и кнопка соответствуют друг другу и активны или на панели всегда одна кнопка которая активизирует самое верхнее окно программы. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 09:02 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV, ты же вроде на своём остановился варианте? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 10:29 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панург, Остановка на одном из вариантов не значит прекращения работ по поиску лучших и более функциональных вариантов... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 21:42 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панург, По варианту Программа_09.mdb возникли вопросы. 1. Форма 2 отличается от формы 1 и 3 вдавленной клиентской областью, как окно аксеса тогда как остальные формы этого эффекта не имеют. его можно устранить и на форме 2? 2. Несмотря на условную компиляцию при открытом окне VB открытие отчёта подвесило аксес и пришлось снимать задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 22:00 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV1. Форма 2 отличается от формы 1 и 3 вдавленной клиентской областью, как окно аксеса тогда как остальные формы этого эффекта не имеют. его можно устранить и на форме 2?Нет, это особенности отображения окна (границы). Даже если ты уберёшь весь код, ничего не изменится. GVOV2. Несмотря на условную компиляцию при открытом окне VB открытие отчёта подвесило аксес и пришлось снимать задачу.Ну усовершенствуй процедуры перехвата сообщений окон. Тут есть примеры, в том числе с ассемблерными вставками. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 03:50 |
|
Управление формами
|
|||
---|---|---|---|
#18+
ПанургНу усовершенствуй процедуры перехвата сообщений окон. Тут есть примеры, в том числе с ассемблерными вставками. Ну вы и загнули TC с API не может разобраться, а вы ассемблер! Вы сами то ассмемблерные вставки пользовали? Прежде чем советовать думайте. К стати я программировал на ассемблере и даже пытался делать вставки в VBA (ж.па полная) Этот совет не для ТС ну и наверно не для вас. С уважением. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 06:05 |
|
Управление формами
|
|||
---|---|---|---|
#18+
ROIК стати я программировал на ассемблере и даже пытался делать вставки в VBA Молодец, чо! Пирожок на полочке... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 06:46 |
|
Управление формами
|
|||
---|---|---|---|
#18+
ROI, С уважением. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 06:51 |
|
Управление формами
|
|||
---|---|---|---|
#18+
ПанургТут есть примеры, в том числе с ассемблерными вставками. А можно ссылочку? Поиском найти ничего, кроме трепа не удалось. Это, конечно, еще то извращение, даже если можно это делать недокументировано, интересно принципиальное наличие такой возможности без использования сторонних dll ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 07:56 |
|
Управление формами
|
|||
---|---|---|---|
#18+
MrShinПанургТут есть примеры, в том числе с ассемблерными вставками. А можно ссылочку? Поиском найти ничего, кроме трепа не удалось. Это, конечно, еще то извращение, даже если можно это делать недокументировано, интересно принципиальное наличие такой возможности без использования сторонних dllПожалуйста - Прокрутка формы колесиком мыши Посмотри и другие примеры этого мембера. Бенедикт правда и гостем иногда пишет ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 08:11 |
|
Управление формами
|
|||
---|---|---|---|
#18+
MrShinЭто, конечно, еще то извращение, даже если можно это делать недокументированоЯ так не считаю (вставки ассемблерные не использую). В Access есть множество недокументированных свойств и процедур, и если знаешь о них, то вполне себе можно использовать. Нет всего лишь гарантии, что в какой-либо версии их не отключат. Но перебираясь с версии на версию, иногда всё равно приходится в той или иной степени подправлять. Или не приходится... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 08:23 |
|
Управление формами
|
|||
---|---|---|---|
#18+
ПанургПожалуйста - Прокрутка формы колесиком мыши Нуу, это неинтересно :) просто выделяем память, даем ей разрешение на выполнение, заливаем туда машинные коды - какие же это ассемблерные вставки? Такой трюк можно сделать в любой среде, где есть возможность вызова API и запретить это нельзя, могут только поменять структуру памяти для пи-кода, понадобится коррекция заливаемого дампа. Нормальные вставки выглядят так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Тем не менее, Панург, спасибо за ссылку, а товарищу Бенедикту - за код спасибо, вполне может пригодится. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 08:31 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Всем спасибо, понял что дальше углубляться не для меня, но и того что узнал уже достаточно для улучшения вида форм программы. И хотелось услышать ответ на вопрос который уже звучал выше. Можно ли перехватывать событие минимизации формы и в этот момент минимизировать Access. Звучит как будто несложно но насколько сложным есть решение? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 08:40 |
|
Управление формами
|
|||
---|---|---|---|
#18+
MrShinНуу, это неинтересноЧем богаты... MrShinНормальные вставки выглядят такИ как ты себе представляешь это запускать? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 08:42 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOVМожно ли перехватывать событие минимизации формы и в этот момент минимизировать Access Элементарно. В событии Resize формы проверяешь, что с ней произошло. Для проверки на максимизацию и минимизацию есть API функции Код: vbnet 1. 2.
В событии проверяем и делаем, что нужно: 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 08:50 |
|
Управление формами
|
|||
---|---|---|---|
#18+
ПанургROI, С уважением. Да ладно проехали. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 08:55 |
|
Управление формами
|
|||
---|---|---|---|
#18+
ПанургИ как ты себе представляешь это запускать? Если язык поддерживает вставки, то способ запуска также встроен. В VBA пока не увидел даже недокументированного способа ассемблеронй вставки, только запуск произвольного кода из дампа. Это я говорю только к тому, что способ, использованный Бенедиктом нельзя называть ассемблерной вставкой, эта технология называется по-другому. В общем, я домотался до термина :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 08:55 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Я в свое время активно использовал ассемблерные вставки в Паскале и Дельфи, иногда удавалось прилично ускорить ответственные короткие куски кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 08:57 |
|
Управление формами
|
|||
---|---|---|---|
#18+
MrShin, Спасибо, попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 09:22 |
|
Управление формами
|
|||
---|---|---|---|
#18+
MrShinЭлементарно. В событии Resize формы проверяешь, что с ней произошло.только у отчёта до 2007 нет такого события ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 09:30 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панургтолько у отчёта до 2007 нет такого события Тогда по таймеру только опрашивать, похоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 09:35 |
|
Управление формами
|
|||
---|---|---|---|
#18+
MrShinТогда по таймеру только опрашивать, похоже.Таймера там тоже нет... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 09:51 |
|
Управление формами
|
|||
---|---|---|---|
#18+
А, так это отчет! Не читал весь топик. Честно говоря, я бы не стал вешать отчет в воздухе без формы, по-моему это не очень хорошее решение. Не совсем представляю, зачем отчет может понадобиться в отдельном виде. В качестве превью перед печатью его вполне можно засунуть в форму, у которой есть либо меню, либо контролы для дальнейшей работы с превью отчета. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 10:06 |
|
Управление формами
|
|||
---|---|---|---|
#18+
MrShinА, так это отчет! Не читал весь топик. Честно говоря, я бы не стал вешать отчет в воздухе без формы, по-моему это не очень хорошее решение. Не совсем представляю, зачем отчет может понадобиться в отдельном виде. В качестве превью перед печатью его вполне можно засунуть в форму, у которой есть либо меню, либо контролы для дальнейшей работы с превью отчета.В Access (по крайней мере до 2007 включительно) отчёт невозможно поместить на форму. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 10:35 |
|
Управление формами
|
|||
---|---|---|---|
#18+
MrShinНе совсем представляю, зачем отчет может понадобиться в отдельном виде.ТЗ такое. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 10:37 |
|
Управление формами
|
|||
---|---|---|---|
#18+
ПанургВ Access (по крайней мере до 2007 включительно) отчёт невозможно поместить на форму. Шах и мат :) И как же я с Акцесс 97 и 2000 раньше работал? Кошмар :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 11:24 |
|
Управление формами
|
|||
---|---|---|---|
#18+
MrShinШах и мат :)Так не интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 11:36 |
|
Управление формами
|
|||
---|---|---|---|
#18+
[quot Панург]MrShinВ Access (по крайней мере до 2007 включительно) отчёт невозможно поместить на форму. А с какой целью отчёт размещают на форме? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 11:56 |
|
Управление формами
|
|||
---|---|---|---|
#18+
час58, отвечу вопросом. Кто размещает? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 14:06 |
|
Управление формами
|
|||
---|---|---|---|
#18+
ПанургMrShinНе совсем представляю, зачем отчет может понадобиться в отдельном виде.ТЗ такое. Не совсем. Просто надо чтобы программа сворачивалсь на панель задач и имела там одну кнопку. А отдельный отчет это как вариант решения, который попадает в эти условия. Но я за то чтобы все формы были видны но на панели была одна кнопка. Это не сложно делается само по себе но... вместе со сворачиваемостью привело к таким вот спорным решениям. Хотя программу когда отчёт или диалоговое окно наверху сворачивать не обязательно. Главное чтобы программа сворачивалась когда она в режиме первой и второй формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 19:58 |
|
Управление формами
|
|||
---|---|---|---|
#18+
MrShinGVOVМожно ли перехватывать событие минимизации формы и в этот момент минимизировать Access Элементарно. В событии Resize формы проверяешь, что с ней произошло. Для проверки на максимизацию и минимизацию есть API функции Код: vbnet 1. 2.
В событии проверяем и делаем, что нужно: 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 свёртывается с окном акса (как и надо) но вот назад не возвращается. Всё остальное работает просто и надёжно как и хотелось, но вот с минимизацией никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 23:54 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Подскажите почему когда закрываю форму (в прикрепленном файле) и пытаюсь перейти в редактирование кода то он открывается за окном Accessa и чтобы его увидеть надо каждый раз минимизировать окно Access. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 05:23 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV, HWND_TOPMOST - Помещает окно перед не самыми верхними окнами. Окно сохраняет свою самую верхнюю позицию даже тогда, когда оно неактивное. Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 05:49 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV, форма имеет свойство modal=true, которое применяется для вызова диалоговых окон соответственно всегда поверх других окон и до закрытия останавливает действие кода, запущенного вне этого окна. Нужно сделать modal=false. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 09:03 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Спасибо! С этим разобрался. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 12:55 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Подскажите еще один момент. Если я перетаскиваю формы и модуль из программы Программа_01.mdb в новую базу и в параметрах запуска ставлю Форма1 (в прикрепленном файле). То при запуске окно Access остается видимым. Хотя в программе Программа_01.mdb форма запускается со скрытым окном. Что надо еще сделать в новой базе чтобы окно Access запускалось скрытым? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 13:04 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV Подскажите еще один момент. Если я перетаскиваю формы и модуль из программы Программа_01.mdb в новую базу и в параметрах запуска ставлю Форма1 (в прикрепленном файле). То при запуске окно Access остается видимым. Хотя в программе Программа_01.mdb форма запускается со скрытым окном. Что надо еще сделать в новой базе чтобы окно Access запускалось скрытым? 11447423 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 13:52 |
|
Управление формами
|
|||
---|---|---|---|
#18+
zimkon GVOV, Ну а как же скрывается при запуске окно в программе Программа_01.mdb без использования функции hidde_on? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 16:11 |
|
Управление формами
|
|||
---|---|---|---|
#18+
zimkon Ваш вариант не позволяет минимизировать форму на панель задач. Поэтому вопрос остается актуальным. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 17:00 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Дошло!!! Там был макрос AutoExec, который запускал hidde_on. Этот вопрос тоже решен! ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 17:22 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Вот бы еще решить вопрос с "красивым" восстановлением окна по функции hidde_on. Она восстанавливает с указанным размером (в примере 1200 на 1200). А как можно высчитать реальную рабочую область окна чтобы после восстановления окна не приходилось два раза жать на кнопку восстановления /разворачивания чтобы оно заняло всю рабочую область? Или это очень сложно? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 19:25 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV Вот бы еще решить вопрос с "красивым" восстановлением окна по функции hidde_on. Она восстанавливает с указанным размером (в примере 1200 на 1200). А как можно высчитать реальную рабочую область окна чтобы после восстановления окна не приходилось два раза жать на кнопку восстановления /разворачивания чтобы оно заняло всю рабочую область? Или это очень сложно? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2020, 20:28 |
|
Управление формами
|
|||
---|---|---|---|
#18+
zimkon GVOV Вот бы еще решить вопрос с "красивым" восстановлением окна по функции hidde_on. Она восстанавливает с указанным размером (в примере 1200 на 1200). А как можно высчитать реальную рабочую область окна чтобы после восстановления окна не приходилось два раза жать на кнопку восстановления /разворачивания чтобы оно заняло всю рабочую область? Или это очень сложно? Извиняюсь, вопрос был о восстановлении окна Access после закрытия (функция hidde_off). То есть если закрыть Форму 1 то чтобы окно Access восстановилось на весь экран (максимизировалось) чтобы не делать это каждый раз вручную (после пробных запусков). На работоспособность программы не влияет но все же... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 01:01 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV zimkon пропущено... Извиняюсь, вопрос был о восстановлении окна Access после закрытия (функция hidde_off). То есть если закрыть Форму 1 то чтобы окно Access восстановилось на весь экран (максимизировалось) чтобы не делать это каждый раз вручную (после пробных запусков). На работоспособность программы не влияет но все же... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 03:41 |
|
Управление формами
|
|||
---|---|---|---|
#18+
zimkon, Но окно Accessa остается 1200 на 1200 точек. Как раз его размер и нужно изменить в соответствии с рабочей областью рабочего стола ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 03:52 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV zimkon, Но окно Accessa остается 1200 на 1200 точек. Как раз его размер и нужно изменить в соответствии с рабочей областью рабочего стола "Гранаты у тебя не той системы" © WinXP, Access 2003 у мну ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 04:12 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV, не очень понятно зачем, но всё же ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 06:31 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панург GVOV, не очень понятно зачем, но всё же Отличное решение! Зачем? При разработке/отладке, когда отключено автоматическое закрытие Accessa часто запускаю программу и после закрытия потом руками восстанавливаю окна. Через несколько лет, начало задалбывать :) А сейчас решил поработать не только над удобством пользователей а и над своим. Теперь станет намного удобнее! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2020, 14:32 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Опять прошу помощи. В программе есть Форма3 которая есть диалоговой формой. Она может запускаться с Формы1 и Формы2. Отображением её на верху при переходе в программу с других программ по щелчку на панели задач, я так понимаю, занимается таймер Формы3. И всё работает так как надо. Но для задач Формы3 потребовался таймер (в примере я просто отключил его активацию при открытии). И теперь при переходе на программу через панель задач при запущенной Форме3 активируется вызвавшая её форма а не сама Форма 3 которая в это время должна быть вверху. Вопрос. Можно вернуть функционал отображения Формы3 вверху при переходе на программу через панель задач не используя её таймер? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 01:44 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV Отображением её на верху при переходе в программу с других программ по щелчку на панели задач, я так понимаю, занимается таймер Формы3 . Вот возможное решение (см пример). Комментарий дан в в модуле формы "Форма2" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 04:47 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панург GVOV Отображением её на верху при переходе в программу с других программ по щелчку на панели задач, я так понимаю, занимается таймер Формы3 . Вот возможное решение (см пример). Комментарий дан в в модуле формы "Форма2" Да возможно те методы решения предложены были другими пользователями. Применил Ваше решение. Работает нормально, побочных эффектов пока не замечено. Спасибо за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.04.2020, 16:06 |
|
Управление формами
|
|||
---|---|---|---|
#18+
На тестовой форме (на форме 2) добавил кнопку которая открывает MSWord. В WinXP все нормально открывается а вот в Win7 и Win10 MSWord открывается на заднем плане. В принципе ничего критичного но малость неудобно пользователю который хочет чтобы документ открывался сверху. Подскажите это связано с специфической передачей фокуса между формами или я не правильно открываю ворд? И можно ли все таки в Win7 и Win10 вывести окно автоматически наперед хотя бы насильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 19:45 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV вывести окно автоматически наперед хотя бы насильно формирую и закрываю в невидимом режиме затем повторно открываю через shell "winword.exe c:\temp\dog15.docx",maximum в строчке могут быть ошибки -набирала прямо в сообщении ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 20:31 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV, уточнение Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 20:48 |
|
Управление формами
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА GVOV, уточнение Тут вижу сохранение документа. Очень хотелось бы обойтись без него. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 22:15 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV, После сохранения и повторного открытия есть свои проблемы. Если пользователь захочет сохранить то документ сохранится в то место откуда я его открыл и это не удобно. А очень удобно когда при сохранении (первом) будет выведено окно сохранения где пользователь выберет куда ему сохранить документ. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2020, 22:20 |
|
Управление формами
|
|||
---|---|---|---|
#18+
zimkon Спасибо за наводку. Как будто помогло побороть окна ворда и екселя! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 02:41 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV Как будто помогло побороть окна ворда и екселя ! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 05:04 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV, Тук-тук Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2020, 05:35 |
|
Управление формами
|
|||
---|---|---|---|
#18+
В боевом применении управление формами работает отлично, каких либо проблем не наблюдается, пользователи довольны. Но вылез один (а точнее два) неприятных косяка с MsgBox... 1. При открытии MsgBox он появляется как и надо наверху, но в панели задач появляется еще одна кнопка и если в этот момент нажать на панели задач первую кнопку приложения то вызывающая форма отобразится на экране в заблокированом режиме пока не переключишся на MsgBox и не закроешь его. 2. Если переходить с другого открытого окна на приложение с открытым MsgBox (на кнопкуMsgBox'а) то MsgBox отображается на фоне другого открытого окна а не приложения с которого оно возникло. По большому счету эти косяки не критичны и проявляются только если этого захотеть но все равно несколько портят впечатление от, как до этого казалось, отлично работающего механизма управления формами. Может можно как то устранить выявленный эффект? Тест прилагаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2020, 03:43 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV Может можно как то устранить выявленный эффект? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2020, 04:51 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панург, Вообще то логично... ;) Буду двигаться в этом направлении! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2020, 12:25 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Начал делать свой MsgBox и столкнулся с одной проблемой, обойти которую не могу. Проблема высчитать высоту окна формы чтобы влезло сообщение. Стандартный MsgBox это всё делает автоматически а в моём случае я увеличиваю высоту поля и формы чтобы влез текст. Но тексты бывают: "Строка1" & "Строка 2" - вмещается в одну строку "Строка1" & vbNewLine & vbNewLine & "Строка 2" - вмещается уже в три строки при одинаковом количестве символов. Поэтому определить количество строк просто определив длину текста и разделив на количество символов в поле по ширине не получается. Не могу даже придумать как определить есть ли в тексте vbNewLine Для каждого сообщения высчитывать высоту эмпирическим путем и передавать в форму - кажется не очень правильно. Может кто натолкнет в каком направлении двигаться? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 03:32 |
|
Управление формами
|
|||
---|---|---|---|
#18+
GVOV, а сам искать не пробовал? всё на сто раз обговорено... 1. API DrawText 2. Access.WizHook. TwipsFromFont ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 05:47 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Панург, Пробовал, но по таким словам не додумался поискать. Спасибо, буду изучать... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2020, 18:00 |
|
Управление формами
|
|||
---|---|---|---|
#18+
Опять столкнулся с "неправильным" поведением форм настроить которое не могу. Задача. Открыть форму 4. Условие чтобы при активации приложения в любой момент времени выводилась последняя открытая форма вверху, в панели задач была одна вкладка приложения и не показывалось окно Access. Это условие в принципе было выполнено выше по топику. 1 случай - открыть прямо с формы 1. Открывается, функционирует нормально. 2 случай - открыть сначала форму 3 а потом с неё ту же форму 4. Открывается но функционирует неправильно. Переходы по ТАБ работают не на ней а на форме 3 с которой она открыта. Начинаю что-то менять в коде перестаёт выполняться условие, при активации приложения (при активации 4 форма не выводится наверху). Помогите сделать так чтобы во 2 случае 4 форма работала корректно (переходы по ТАБ были на ней). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2021, 23:19 |
|
|
start [/forum/topic.php?all=1&fid=45&tid=1609803]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
118ms |
get tp. blocked users: |
1ms |
others: | 267ms |
total: | 457ms |
0 / 0 |