begin process at 2010 02 09 22:08:15
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaire

 > FORM NON DÉPLAÇABLE ET AUTRES

FORM NON DÉPLAÇABLE ET AUTRES


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaire Niveau :Débutant Date de création :19/08/2002 Date de mise à jour :09/10/2002 16:41:28 Vu :5 656

Auteur : Bruto

Ecrire un message privé
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

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

  • //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;
//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.


 Sources du même auteur

Source avec Zip Source avec une capture UTILITAIRE MDI & ROUTINES MDI DE BASE
Source avec Zip Source avec une capture JOURS FÉRIÉS : ASTUCES
Source avec Zip Source avec une capture CONVERTISSEUR 36 FORMATS - DECIMAL - OCTAL - ... : VERSION T...
Source avec Zip Source avec une capture NETTOYAGE DES FICHIERS INI : VERSION TOOLS
Source avec Zip Source avec une capture NRJ.BE : GAGNER DES POINTS

 Sources de la même categorie

Source avec Zip Source avec une capture WEBDEZIGN FORMULAIRE par craftsystem
Source avec Zip Source avec une capture GESTION DE CALENDRIER DYNAMIQUE par docfullspeed
Source avec Zip APPARITION PROGRESSIVE D'UNE FENÊTRE par wolf691300
Source avec une capture UN CADRE CONTENANT UN NAVIGATEUR TYPE MAGNÉTOSCOPE par speletux
Source avec Zip LOGICIEL POUR GÉNÉRER UNE CLASSE DELPHI par hudsonhawk3

Commentaires et avis

Commentaire de Glorkonline le 13/09/2003 19:54:03

Mouais ... Y'a moyen de faire çà beaucoup plus courtement ... Pour une bonne source, je te conseille d'aller :
http://www.delphifr.com/article.aspx?ID=104

Commentaire de grandvizir le 21/05/2005 10:02:32

=========1)
Pour figer très largement une fenêtre, il y a autre chose de sympa: il suffit d'interdire WM_SYSCOMMAND avec seulement 4 lignes de code. Voici un petit code sympa :

unit Unit1;
interface
uses Windows, Messages, SysUtils, Classes, Controls, Forms;
type
  TForm1 = class(TForm)
  private
    procedure FixedForm(var Msg:TWMSysCommand); message WM_SYSCOMMAND;
  end;
var Form1 : TForm1;
implementation
{$R *.DFM}
procedure TForm1.FixedForm(var Msg:TWMSysCommand);
begin
  Msg.Result:=-1;
end;
end.

=========2)
Conseillons le code N°28941 pour épurer les menus inutiles du popup.

=========3)
Je ne sais pas d'où tu nous sort tes constantes, mais moi dans Windows.pas, j'ai ce qui suit. Et ce n'est pas pareil !

const
  MF_BYPOSITION = $400;
  SC_SIZE = 61440;
  SC_MOVE = 61456;
  SC_MINIMIZE = 61472;
  SC_MAXIMIZE = 61488;
  SC_NEXTWINDOW = 61504;
  SC_PREVWINDOW = 61520;
  SC_CLOSE = 61536;
  SC_VSCROLL = 61552;
  SC_HSCROLL = 61568;
  SC_MOUSEMENU = 61584;
  SC_KEYMENU = 61696;
  SC_ARRANGE = 61712;
  SC_RESTORE = 61728;
  SC_TASKLIST = 61744;
  SC_SCREENSAVE = 61760;
  SC_HOTKEY = 61776;
  SC_DEFAULT = 61792;
  SC_MONITORPOWER = 61808;
  SC_CONTEXTHELP = 61824;
  SC_SEPARATOR = 61455;
  SC_ICON = SC_MINIMIZE;
  SC_ZOOM = SC_MAXIMIZE;

Commentaire de devilmaycry41281 le 05/09/2007 19:04:13

un source qui ne sert a rien
il ya la propriété du form "align" il suffit de la metre sur "alCustom"

Commentaire de cirec le 05/09/2007 21:17:54 administrateur CS

@devilmaycry41281 :

ce source n'est pas inutile bien au contraire

si tu désires produire un code qui soit compatible entre les différentes versions de Delphi
cette petite astuce a son importance ... puisque "alCustom" n'est pas disponible dans toutes les versions ;-)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales