Thread View: pl.comp.bazy-danych.msaccess
15 messages
15 total messages
Started by MaciejF
Wed, 18 Nov 2015 08:41
Otwarcie accessa w małym oknie tylko z wymiarami formularza startowego
Author: MaciejF
Date: Wed, 18 Nov 2015 08:41
Date: Wed, 18 Nov 2015 08:41
10 lines
1391 bytes
1391 bytes
Witam, niestety nie wiem jak ustawić aplikację na otwarcie w małym oknie tylko z wymiarami formularza startowego na dodatek gdzieś z boku ekranu. Muszę zrobić coś na kształt kalkulatora, który będzie coś wyliczał dla innej aplikacji. MF
Re: Otwarcie accessa w małym oknie tylko z wymiarami formularza startowego
Author: Maciej Tokarz
Date: Wed, 18 Nov 2015 10:04
Date: Wed, 18 Nov 2015 10:04
3 lines
1439 bytes
1439 bytes
Witaj, Zerknij na takie tematy: https://www.google.pl/#q=ms+access+startup+position+move M.
Re: Otwarcie accessa w małym oknie tylko z wymiarami formularza startowego
Author: MaciejF
Date: Wed, 18 Nov 2015 10:36
Date: Wed, 18 Nov 2015 10:36
51 lines
2642 bytes
2642 bytes
Wygooglałem coś takiego:
Option Compare Database
Option Explicit
Declare Function GetSystemMetrics32 Lib "user32" _
Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
Declare Sub SetWindowPos Lib "user32" (ByVal hWnd&, _
ByVal hWndInsertAfter&, _
ByVal X&, ByVal Y&, ByVal cX&, _
ByVal cY&, ByVal wFlags&)
Global Const HWND_TOP = 0 'Moves MS Access window to top
'of Z-order.
'Values for wFlags.
Global Const SWP_NOZORDER = &H4 'Ignores the hWndInsertAfter.
Function SizeAccess(cX As Long, cY As Long, cWidth As Long, cHeight As Long)
Dim h As Long
'Get handle to Microsoft Access.
h = Application.hWndAccessApp
'Position Microsoft Access.
SetWindowPos h, HWND_TOP, cX, cY, cWidth, cHeight, SWP_NOZORDER
Application.RefreshDatabaseWindow
End Function
Function ScreenRL(cRight As Boolean)
'pick up the current monitor height and width
Dim w As Long, h As Long
w = GetSystemMetrics32(0) ' width in points
h = GetSystemMetrics32(1) ' height in points
w = w / 2
h = h - 30
'set the Access window Size using SizeAccess function
If cRight = True Then
'position the access window to take up the Left half of the desktop
SizeAccess w, 0, w, h
Else
'position the access window to take up the Left half of the desktop
SizeAccess 0, 0, w, h
End If
End Function
Re: Otwarcie accessa w małym oknie tylko z wymiarami formularza startowego
Author: Maciej Tokarz
Date: Wed, 18 Nov 2015 12:26
Date: Wed, 18 Nov 2015 12:26
4 lines
1638 bytes
1638 bytes
Chyba butów nie wiąże ten kod :) Nawet OnTop masz... Pozdrawiam, M.
Re: Otwarcie accessa w małym oknie tylko z wymiarami formularza startowego
Author: Zbigniew Bratko
Date: Wed, 18 Nov 2015 13:38
Date: Wed, 18 Nov 2015 13:38
29 lines
1851 bytes
1851 bytes
Użytkownik "MaciejF" napisał w wiadomości grup dyskusyjnych:d85542ad-65fa-49b1-a2ab-91ed8c36389b@googlegroups.com... Witam, niestety nie wiem jak ustawić aplikację na otwarcie w małym oknie tylko z wymiarami formularza startowego na dodatek gdzieś z boku ekranu. Muszę zrobić coś na kształt kalkulatora, który będzie coś wyliczał dla innej aplikacji. [...] A co sądzisz o ustawieniu formularza startowego jako PopUp, lub Modal i wtedy ukrywasz okno Access'a. Formularz pozostaje widoczny i przesuwasz go gdzie chcesz. Odpada Ci zabawa oknem Accessa, ribbonem itp. Jeżeli jesteś zainteresowany, to mogę się pobawić w tym temacie. Dawno na grupie nie było nic o API ;-) -- Pozdrowienia BraZby www.faq.accdb.pl/ www.acc97.accdb.pl/
Re: Otwarcie accessa w małym oknie tylko z wymiarami formularza startowego
Author: MaciejF
Date: Wed, 18 Nov 2015 16:17
Date: Wed, 18 Nov 2015 16:17
6 lines
1419 bytes
1419 bytes
Witam Zbigniew byłbym zainteresowany. Może będzie od Ciebie coś zgrabniejszego... / MF
Re: Otwarcie accessa w małym oknie tylko z wymiarami formularza startowego
Author: Zbigniew Bratko
Date: Wed, 18 Nov 2015 19:11
Date: Wed, 18 Nov 2015 19:11
194 lines
6920 bytes
6920 bytes
Użytkownik "MaciejF" napisał w wiadomości grup
dyskusyjnych:0e2b6492-921d-45e6-af54-429a8bcbfb86@googlegroups.com...
Witam
Zbigniew byłbym zainteresowany.
Może będzie od Ciebie coś zgrabniejszego...
[...]
Sprawdź, czy poniższy przykład jest zgrabniejszy ;-)
Option Compare Database
Option Explicit
#If VBA7 Then
Private Declare PtrSafe Function SystemParametersInfo Lib "user32" _
Alias "SystemParametersInfoA" _
(ByVal uAction As Long, _
ByVal uParam As Long, _
ByRef lpvParam As Any, _
ByVal fuWinIni As Long) As Long
Private Declare PtrSafe Function GetWindowRect Lib "user32" _
(ByVal hwnd As LongPtr, _
lpRect As RECT) As Long
Private Declare PtrSafe Function SetWindowPos Lib "user32" _
(ByVal hwnd As LongPtr, _
ByVal hWndInsertAfter As LongPtr, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long
Private Declare PtrSafe Function GetParent Lib "user32" _
(ByVal hwnd As LongPtr) As LongPtr
#Else
Private Declare Function SystemParametersInfo Lib "user32" _
Alias "SystemParametersInfoA" _
(ByVal uAction As Long, _
ByVal uParam As Long, _
ByRef lpvParam As Any, _
ByVal fuWinIni As Long) As Long
Private Declare Function GetWindowRect Lib "user32" _
(ByVal hwnd As Long, _
lpRect As RECT) As Long
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long
#End If
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type POINTAPI
x As Long
y As Long
End Type
' SystemParametersInfo
Private Const SPI_GETWORKAREA = 48
' SetWindowPos
Private Const HWND_TOP = 0
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOZORDER = &H4
Private Const SWP_NOMOVE = &H2
Private Const SWP_SHOWWINDOW = &H40
Private Const SWP_HIDEWINDOW = &H80
' Chowa okno MS Access i ustawia formularz typu PopUp (podręczny)
' w narożnikach dostępnego obszaru pulpitu lub centralnie.
' lPos - dla wartości od 1 do 4 ustawia formularz kolejno w narożniku:
' 1 - lewy górny, 2 - prawy górny, 3 - prawy dolny, 4 - lewy dolny,
' dla innych wartości centruje formularz
'______________________________________
Private Sub MovePopUpForm(lPos As Long)
#If VBA7 Then
Dim hWind As LongPtr
#Else
Dim hWind As Long
#End If
Dim lRet As Long
Dim x As Long
Dim y As Long
Dim rctFrm As RECT
Dim rctScreen As RECT
If Me.PopUp = False Then
MsgBox "Niestety, przykład dotyczy formularza PopUp !" & vbNewLine & _
"Na stronie: www.faq.accdb.pl/11a_VbaWinFrmFaq.htm#vba11a_05" &
vbNewLine & _
"znajduje się przykład:" & vbNewLine & vbNewLine & _
"Jak ustawić formularz w/m wolnej dostępnej przestrzeni w oknie
Accessa"
Exit Sub
End If
' ukryj okno MS Access nie zmieniając jego rozmiaru i położenia
lRet = SetWindowPos( _
Application.hWndAccessApp, _
0&, 0&, 0&, 0&, 0&, _
SWP_NOZORDER Or SWP_NOSIZE Or _
SWP_NOMOVE Or SWP_HIDEWINDOW)
' pobierz dostępny obszar pulpitu
lRet = SystemParametersInfo(SPI_GETWORKAREA, vbNull, rctScreen, 0&)
' pobierz rozmiar i położenie okna formularza
lRet = GetWindowRect(Me.hwnd, rctFrm)
Select Case lPos
Case 1 'lewy górny róg
x = rctScreen.Left
y = rctScreen.Top
Case 2 ' prawy górny róg
x = (rctScreen.Right - rctScreen.Left) - (rctFrm.Right -
rctFrm.Left)
y = rctScreen.Top
Case 3 'prawy dolny róg
x = (rctScreen.Right - rctScreen.Left) - (rctFrm.Right -
rctFrm.Left)
y = (rctScreen.Bottom - rctScreen.Top) - (rctFrm.Bottom -
rctFrm.Top)
Case 4 ' lewy dolny róg
x = rctScreen.Left
y = rctScreen.Bottom - (rctFrm.Bottom - rctFrm.Top)
Case Else ' centralnie
x = (rctScreen.Right - rctScreen.Left) / 2 - (rctFrm.Right -
rctFrm.Left) / 2
y = (rctScreen.Bottom - rctScreen.Top) / 2 - (rctFrm.Bottom -
rctFrm.Top) / 2
End Select
' przesuń formularz
lRet = SetWindowPos(Me.hwnd, HWND_TOP, x, y, 0&, 0&, SWP_NOSIZE)
End Sub
'_____________________
Private Sub ShowAccess()
' odkryj okno MS Access w poprzednim miejscu i rozmiarze
SetWindowPos Application.hWndAccessApp, _
HWND_TOP, _
0&, 0&, 0&, 0&, _
SWP_NOZORDER Or SWP_NOSIZE Or _
SWP_NOMOVE Or SWP_SHOWWINDOW
End Sub
'____________________
Private Sub Form_Load()
Me.TimerInterval = 300
' niestety w Access 2007 nie za bardzo działa. Znika wszystko
' Call MovePopUpForm(2)
End Sub
'_____________________
Private Sub Form_Timer()
Me.TimerInterval = 0
Call MovePopUpForm(2)
End Sub
'______________________________________
Private Sub Form_Unload(Cancel As Integer)
Call ShowAccess
End Sub
Formularz musi mieć ustawioną właściwość "Podręczny" = TRUE (PopUp),
ale nic nie stoi na przeszkodzie by mu dołożyć właściwość Modal.
Będzie wtedy zawsze na wierzchu.
U mnie działa na Win 7 64bit i Acc2010-64bit oraz Acc2007-32bit.
--
Pozdrowienia
BraZby
www.faq.accdb.pl/
www.acc97.accdb.pl/
Re: Otwarcie accessa w małym oknie tylko z wymiarami formularza startowego
Author: MaciejF
Date: Wed, 18 Nov 2015 21:19
Date: Wed, 18 Nov 2015 21:19
3 lines
1457 bytes
1457 bytes
Potrzebuję podpowiedzi jak odkryć menu Accessa gdyż teraz to ukryłem skutecznie wszystko łącznie z formularzem pop-up. Help!
Re: Otwarcie accessa w małym oknie tylko z wymiarami formularza startowego
Author: Zbigniew Bratko
Date: Wed, 18 Nov 2015 21:42
Date: Wed, 18 Nov 2015 21:42
26 lines
1766 bytes
1766 bytes
Użytkownik "MaciejF" napisał w wiadomości grup dyskusyjnych:28afdb4e-0351-499c-b81d-670bffd69f9c@googlegroups.com... Potrzebuję podpowiedzi jak odkryć menu Accessa gdyż teraz to ukryłem skutecznie wszystko łącznie z formularzem pop-up. Przechodząc do widoku projekt formularza pokazywane jest okno Accessa. Jeżeli cały Access się schował, to pozostaje Ctrl+Alt+Del, zabić proces MS Access i ponownie uruchomić bazę. W celach testowych zrób sobie przycisk: Private Sub btnShowAcc_Click() Call ShowAccess End Sub będzie łatwiej. -- Pozdrowienia BraZby www.faq.accdb.pl/ www.acc97.accdb.pl/
Re: Otwarcie accessa w małym oknie tylko z wymiarami formularza startowego
Author: MaciejF
Date: Thu, 19 Nov 2015 10:06
Date: Thu, 19 Nov 2015 10:06
28 lines
2308 bytes
2308 bytes
Poniższy fragment kodu jest podświetlany na czerwono.
#VBA7
Private Declare PtrSafe Function SystemParametersInfo Lib "user32" _
Alias "SystemParametersInfoA" _
(ByVal uAction As Long, _
ByVal uParam As Long, _
ByRef lpvParam As Any, _
ByVal fuWinIni As Long) As Long
Private Declare PtrSafe Function GetWindowRect Lib "user32" _
(ByVal hwnd As LongPtr, _
lpRect As RECT) As Long
Private Declare PtrSafe Function SetWindowPos Lib "user32" _
(ByVal hwnd As LongPtr, _
ByVal hWndInsertAfter As LongPtr, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long
Private Declare PtrSafe Function GetParent Lib "user32" _
(ByVal hwnd As LongPtr) As LongPtr
Re: Otwarcie accessa w małym oknie tylko z wymiarami formularza startowego
Author: MaciejF
Date: Fri, 20 Nov 2015 07:47
Date: Fri, 20 Nov 2015 07:47
19 lines
1827 bytes
1827 bytes
Witaj Zbigniew, Niestety nie panuję nad Twoim kodem. Wszystko się ukrywa w moim AC2003. Niestety po uruchomieniu nie widzę okna PopUP z moim formularzem. Oprócz tego fragment kodu: #If VBA7 ... do #Else jest podświetlony na czerwono w edytorze VBA. Po usunięciu tego fragmentu i usunięciu bloku #IF END If aplikacja działa. Niemniej ukrywa wszystko łącznie z formularzem startowym. Czy można jeszcze coś poprawić w twoim kodzie? Używam MS Access 2003. Pozdrawiam MF
Re: Otwarcie accessa w małym oknie tylko z wymiarami formularza startowego
Author: Zbigniew Bratko
Date: Fri, 20 Nov 2015 09:50
Date: Fri, 20 Nov 2015 09:50
45 lines
2814 bytes
2814 bytes
W dniu środa, 18 listopada 2015 09:41:54 UTC+1 użytkownik MaciejF napisał: > Witam, > niestety nie wiem jak > ustawić aplikację > na otwarcie w małym oknie tylko z wymiarami formularza startowego > na dodatek gdzieś z boku ekranu. > > Muszę zrobić coś na kształt kalkulatora, który będzie > coś wyliczał dla innej aplikacji. Nie odpowiadałem, ponieważ miałem i mam dalej problemy z Win 10, a właściwie pocztą w tym systemie. Jeżeli chodzi o kod podświetlony kod na czerwono, to jedna część powinna pracować w Accesie 32-bitowym, a druga w 64-bitowym. Kod na czerwono powinien być ignorowany przez aktualnie uruchomioną wersję Accessa. Jeżeli chodzi o chowanie się wszystkiego, to u mnie też tak było w Access 2007 Private Sub Form_Load() Me.TimerInterval = 300 ' niestety w Access 2007 nie za bardzo działa. Znika wszystko ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ' Call MovePopUpForm(2) End Sub i dlatego przeniosłem Call MovePopUpForm(2) do Timera formularza. Wydłuż czas Timera, lub w celach testowych zrezygnuj z procedury OnLoad formularza, na rzecz przycisków: Private Sub btnMoveForm_Click() Call MovePopUpForm(2) End Sub Private Sub btnShowAcc_Click() Call ShowAccess End Sub i sprawdź, czy działa. Tak z ciekawości pytam: Czy kod nie działał przed usunięciem bloku "podświetlonego na czerwono" -- Pozdrawiam BraZby
Re: Otwarcie accessa w małym oknie tylko z wymiarami formularza startowego
Author: MaciejF
Date: Fri, 20 Nov 2015 11:35
Date: Fri, 20 Nov 2015 11:35
13 lines
1770 bytes
1770 bytes
Tak jest zgłaszany błąd w momencie, w którym jest dokonywana kompilacja. Jak rozumiem w momencie otwarcia formularza. Informacja brzmi jak dobrze pamiętam: "Wystąpił błąd w module lub funkcji formularza" ... Chyba tak to brzmiało. Więc pousuwałem deklaracje tak jak napisałeś powyżej Accessa 64 Bitowego. Błąd zniknął ale tak jak pisałem występują problemy z wywołaniem formularza. Pozdrawiam MF
Re: Otwarcie accessa w małym oknie tylko z wymiarami formularza startowego
Author: adsense
Date: Fri, 20 Nov 2015 20:29
Date: Fri, 20 Nov 2015 20:29
20 lines
2484 bytes
2484 bytes
W dniu piątek, 20 listopada 2015 12:35:06 UTC+1 użytkownik MaciejF napisał: > Tak jest zgłaszany błąd w momencie, w którym jest dokonywana kompilacja. > Jak rozumiem w momencie otwarcia formularza. > > Informacja brzmi jak dobrze pamiętam: > "Wystąpił błąd w module lub funkcji formularza" ... > > Chyba tak to brzmiało. > > Więc pousuwałem deklaracje tak jak napisałeś powyżej Accessa 64 Bitowego. > Błąd zniknął ale tak jak pisałem występują problemy z wywołaniem formularza. [...] Powiem szczerze, masz bardzo dziwne problemy z uruchomieniem mojego kodu. Udałem się na strych, wygrzebałem starego "laptoka" z Windows XP i Access 2000. Skopiowałem kod z mojego postu do formularza i uruchomiłem bazę. Wszystko jest OK. Kod się kompiluje (oczywiście wszystkie funkcje API deklarowane dla Office 64-bit z atrybutem PtrSafe są podświetlone na czerwono) ale to nie ma znaczenie. Tak naprawdę Access (kompilator) nie wie co jest po instrukcji #If VBA7, ważne są dla niego deklaracje po #Else. (Dla kompilatora A2k stała kompilacji VBA7 jest FALSE, bo A2k nic o niej nie wie.) -- Pozdrowienia BraZby
Re: Otwarcie accessa w małym oknie tylko z wymiarami formularza startowego
Author: adsense
Date: Fri, 20 Nov 2015 21:00
Date: Fri, 20 Nov 2015 21:00
15 lines
1931 bytes
1931 bytes
W dniu piątek, 20 listopada 2015 21:29:58 UTC+1 użytkownik ads...@bratko.eu napisał: [ciach] Aby nie przedłużać tematu. Pobierz bazę: http://www.accdb.pl/tmp/dbMoveSize2000.zip i sprawdź, czy działa. Być może, przez najbliższe kilka dni będę nieosiągalny. Do Win XP już nie wracam, ale stary, poczciwy Win 7 wart jest przeprosin. Jak dla mnie Win 10 64-bit jest prawie dobry, tylko nie wszystko działa, a zwłaszcza tzw. "Internet". > -- > Pozdrowienia > BraZby
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads