Avoir les bouton "réduire" et "agrandire" dans un form de VBA
jyver
Messages postés46Date d'inscriptiondimanche 5 juin 2005StatutMembreDernière intervention10 juillet 2007
-
7 juil. 2005 à 16:52
jyver
Messages postés46Date d'inscriptiondimanche 5 juin 2005StatutMembreDernière intervention10 juillet 2007
-
11 juil. 2005 à 12:01
Bonjour,
Tout est dit dans le sujet...
j'aimerai donc savoir comment on fait pour que lorsque l'on clic dessus cela agrandisse ou réduise la fenetre (la form)
rappel : je suis sous VBA
jyver
Messages postés46Date d'inscriptiondimanche 5 juin 2005StatutMembreDernière intervention10 juillet 2007 7 juil. 2005 à 17:05
Et bien d'ai un début de code qui permet de les avoir mais il faut passer par un API (mais je ne maitrise pas les API)
Je crois qu'il s'agit de "SetwidowSize" dans user32 ...
Je voudrai donc pouvoir mieux m'en servir de ces fameux boutons....
Merci d'avance
Private Declare Function CallWindowProc& _
Lib "user32" Alias "CallWindowProcA" _
(ByVal lpPrevWndFunc&, ByVal hwnd&, ByVal Msg&, ByVal wParam&, ByVal lParam&)
Public Const GWL_WNDPROC& -4&, WM_SYSCOMMAND& &H112&
Public BaseUFProc&, BaseXLProc&, AncState&
Function UFProc&(ByVal hwnd&, ByVal uMsg&, ByVal wParam&, ByVal lParam&)
Dim HwndXL&
Const SC_MINIMIZE& = &HF020&
If uMsg = WM_SYSCOMMAND Then
If wParam = (SC_MINIMIZE And &HFFF0&) Then
HwndXL = FindWindow("XLMAIN", Application.Caption)
EnableWindow HwndXL, True
UserForm1.Hide
AncState = Application.WindowState
Application.WindowState = xlMinimized
BaseXLProc = SetWindowLong(HwndXL, GWL_WNDPROC, AddressOf XLProc)
UFProc = 1&
Exit Function
End If
End If
UFProc = CallWindowProc(BaseUFProc, hwnd, uMsg, wParam, lParam)
End Function
Function XLProc&(ByVal hwnd&, ByVal uMsg&, ByVal wParam&, ByVal lParam&)
Const SC_MAXIMIZE& = &HF030&, _ SC_RESTORE& &HF120&, SC_CLOSE& &HF060&
If uMsg = WM_SYSCOMMAND Then If wParam (SC_MAXIMIZE And &HFFF0&) Or wParam (SC_RESTORE _
And &HFFF0&) Or wParam = SC_CLOSE Then
SetWindowLong hwnd, GWL_WNDPROC, BaseXLProc
Application.WindowState = AncState
UserForm1.Show
XLProc = 1&
Exit Function
End If
End If
XLProc = CallWindowProc(BaseXLProc, hwnd, uMsg, wParam, lParam)
End Function
Dans le module UserForm1 :
Private HandleUF&
Private Sub UserForm_Initialize()
Const WS_MAXIMIZEBOX& = &H10000, _ WS_MINIMIZEBOX& &H20000, GWL_STYLE& -16&
HandleUF = FindWindow(vbNullString, Me.Caption)
SetWindowLong HandleUF, GWL_STYLE, _
GetWindowLong(HandleUF, GWL_STYLE) Or WS_MAXIMIZEBOX Or WS_MINIMIZEBOX
BaseUFProc = SetWindowLong(HandleUF, GWL_WNDPROC, AddressOf UFProc)
End Sub
Private Sub UserForm_Terminate()
SetWindowLong HandleUF, GWL_WNDPROC, BaseUFProc
End Sub
ctac
Vous n’avez pas trouvé la réponse que vous recherchez ?
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 8 juil. 2005 à 11:11
lol alors je n'ai vraiment pas compris t'as question,
Serait-il possible que tu réexpliques plus en détail ce que tu veux
faire avec ce code, afin que cela serve à tout le monde et pas que à
toi. Merci de ta compréhension.
TBBUIM
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 8 juil. 2005 à 11:15
Parce que tel que c'est écrit dans le sujet...
Pour moi, en VBA Tu fais un bouton et dans l'évènement clic du écris: Docmd.minimize
Et Maximize pour le bouton agrandir.
En VB, ya pas de DoCmd, donc peut être es-tu obligé d'écrire ce que CTAC a mis, mais pas en VBA sous ACCESS.
Donc soit tu n'as pas testé ce que j'ai écris, soit je n'ai pas compris
ton sujet, bien qu'il semble évident pour toi, auquel cas, je te serais
gré de bien vouloir expliquer en détail la finalité de ta question car
cela m'intéresse. Merci
TBBUIM
jyver
Messages postés46Date d'inscriptiondimanche 5 juin 2005StatutMembreDernière intervention10 juillet 2007 11 juil. 2005 à 08:35
Bonjour,
Dans un userform en VBA, il n'y a que le bouton de la croix "X" pour fermer la fenetre (fermer le userform). Je voudrais avoir les boutons agrandire (le carré) et réduire (le tiret) pour agrandire ou réduire mon userform.
j'espère que tu as compris le sens de ma question ;-) .
Jyver
jyver
Messages postés46Date d'inscriptiondimanche 5 juin 2005StatutMembreDernière intervention10 juillet 2007 11 juil. 2005 à 08:42
Précision : le Docmd.minimize ne marche pas chez moi. Je suis en VBA sous excel (mais il me semble que c'est le meme VBA sous Access que sous Excel)
Jyver