Form non déplaçable et autres

Contenu du snippet

Comme personne sur le forum n'as réussi à me fournir une réponse sur la façon de rendre une form non déplaçable, j'ai entrepris une recherche qui m'a permis de fournir ce petit bout de code.
Il permet de ne pas permettre à l'utilisateur de déplacer la form. Utilisable pour les forms tels que 'Login', ...
De plus je fournis les constantes qui offrent d'autres possibilités comme ne pas pouvoir redimensionner la form, ...
Bonne prog

Source / Exemple :


//Api si vous utilisez le code dans des dll par ex, dans une form ça marche sans
function GetSystemMenu(hwnd: LongInt, bRevert: LongInt): LongInt;external 'user32.dll';
function DeleteMenu(hMenu: LongInt, nPosition: LongInt, wFlags: LongInt): LongInt; external 'user32.dll';
//constantes
//pour GetSystemMenu 
const MF_ENABLED = 0; //Rend le menu accessible.
const MF_DISABLED = 2; //Rend le menu inaccessible, à utiliser conjointement avec MF_GRAYED.
const MF_GRAYED = 1; //Donne un aspect grisé au menu.
const MF_BYCOMMAND = 0;   //uIDEnableItem donne le menuID de l'item (par défaut).
const MF_BYPOSITION = 40; //donne le zero-based
//pour DeleteMenu
Const SC_MAXIMIZE = 30; //Empêche l'aggrandissement de la feuillle
Const SC_MINIMIZE = 20; //Empêche la réduction de la feuille
Const SC_MOVE = 10;     //Empêche le déplacement de la feuille
Const SC_RESTORE = 120; //Empêche la restauration de la feuille
Const SC_SIZE = 0;      //Empêche le redimensionnement de la feuille
Const SC_Close = 60;    //Empêche la fermeture de la feuille

//Pour empêcher de bouger la form
Procedure Form_Move(Handle:Integer);
begin
       DeleteMenu(GetSystemMenu(Handle, FALSE), SC_MOVE, MF_BYCOMMAND);
end;

//A la création de la form supprimer le dépacement
Procedure TForm1.FormCreate(Sender: TObject);
begin
       Form_Move(Form1.Handle);
end;

Conclusion :


Le programme est simple:
une procédure Form_Move avec en paramètre le handle de la form qui ne doit pas bouger
elle utilise deux api's qui vont en fin de traitement supprimer un item dans le menu de la fenêtre en l'occurence le déplacement ( SC_MOVE ).
Il suffit ensuite d'appeler la procédure avec le handle de la fenêtre en paramètre.
Il est donc facile de changer SC_MOVE avec les autres constantes.

!!! je n'ai pas tout tester, peut-être faut-il vérifier les valeurs des constantes.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.