1 membre
Connectés : ( personne )
- La Charte du Forum - Forum - Problèmes liés aux codes du site
Sujet n° 452 |
Empêcher le redimensionnement de la fenêtre Access. |
le 01/01/2011 : 22:46 par jtraulle
visiteur |
Bonjour ! Tout d'abord, merci pour votre site et ces nombreux exemples ! C'est une véritable mine d'or :) J'ai essayé de mettre en oeuvre le code présenté sur cette page : http://www.3stone.be/access/articles.php?lng=fr&pg=219 Il s'agit exactement de ce que je souhaite faire, a savoir les bouton MIN/MAX ont bien disparu :) cependant j'aurai aimé savoir si ce code peut être amélioré. En effet, il m'est toujours possible de redimensionner manuellement la fenêtre Access avec les poignées de redimensionnement en bas à droite et en bas à gauche. De même, l'option Taille du menu contextuel qui apparaît par un clic droit sur la barre de titre et toujours accessible et non grisé. Je vous ai fait une petite vidéo : http://www.screencast.com/users/jtraulle/folders/Default/media/239ecacf-4870-43cb-916d-86e960f48ad3 Est-il possible de remédier à cela en empêchant totalement le redimensionnement ?J'avoue avoir besoin de votre aide parce que je sèche complètement. Merci d'avance pour l'aide que vous pourrez m'apporter !Jean |
|
|
Réponse n° 1 -------- le 03/01/2011 : 01:19 par 3Stone
Administrateur
|
Bonjour,
Le problème, c'est que Access utilise certaines méthodes non standard.
Tu peux essayer ce code, mais ce n'est pas parfait:
Code :Option Compare Database Option Explicit Private Const GWL_STYLE = (-16) Private Const WS_MAXIMIZEBOX = &H10000 Private Const WS_THICKFRAME = &H40000 Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long) As Long Function WindowMove(x, y, w, h) As Long Dim hMenu As Long Dim lStyle As Long Dim Lhwnd As Long Lhwnd = Access.Application.hWndAccessApp MoveWindow Lhwnd, x, y, w, h, 1 'désactive le bouton MAXIMIZE lStyle = GetWindowLong(Lhwnd, GWL_STYLE) lStyle = lStyle And Not WS_MAXIMIZEBOX Call SetWindowLong(Lhwnd, GWL_STYLE, lStyle) 'désactive l'agrandissement lStyle = GetWindowLong(Lhwnd, GWL_STYLE) lStyle = lStyle And Not WS_THICKFRAME Call SetWindowLong(Lhwnd, GWL_STYLE, lStyle) End Function
Sur ouverture du premier formulaire, il suffit d'appeler la fonction:
Code :WindowMove 100,100,800,600
Cordialement, Pierre(3stone) |
|
|
Réponse n° 2 -------- le 03/01/2011 : 15:33 par jtraulle
visiteur |
Bonjour ! Merci pour votre réponse rapide :)
Je viens de tester et il me met Erreur, MoveWindow fonction ou procédure non définie.
Une idée ? |
|
|
Réponse n° 3 -------- le 03/01/2011 : 15:41 par jtraulle
visiteur |
Je viens de déclarer l'api MoveWindow (trouvé ici : ) Code : Public Declare Function MoveWindow Lib "user32" Alias "MoveWindow" (ByVal hwnd As Long, ' Handle to the Window e.g. Me.Hwnd
ByVal x As Long, ' New position of the left side of the Window/Form.
ByVal y As Long, ' New position of the top side of the Window/Form.
ByVal nWidth As Long, ' New width of the Window
ByVal nHeight As Long, ' New height of the Window
ByVal bRepaint As Long) ' Specifies whether Window is to be repainted. True means repainted
As Long ' If the function succeeds, the return value is nonzero else zero. |
|
|
Réponse n° 4 -------- le 03/01/2011 : 16:04 par 3Stone
Administrateur
|
Bonjour,
Cette déclaration fait déjà partie du code que j'ai posté !
Cordialement, Pierre(3stone) |
|
|
sujet actif
sujet clos
Important!
Nouveau message -
Rectifier message
Clôturer sujet
Remonter
|