IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Delphi Discussion :

Déplacer un contrôle en run-time


Sujet :

Contribuez Delphi

  1. #1
    Membre confirmé
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Points : 534
    Points
    534
    Par défaut Déplacer un contrôle en run-time
    Salut,

    Petit snippet qui permet à l'utilisateur de déplacer un contrôle (ici un TPanel) en exécution et de l'amener au premier plan :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: Integer);
    begin
      ReleaseCapture;
      Panel1.Perform(WM_SysCommand,$F012,0);
    end;

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Pourquoi ne pas utiliser la constante dédiée SC_MOVE ?

    ReleaseCapture, hum, c'est plus élégant que WM_LBUTTONUP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TFrmTest.Panel1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
         Panel1.Perform(WM_LButtonUp, 0, 0);
         Panel1.Perform(WM_SYSCOMMAND, SC_MOVE + 2, 0);
    end;
    dans la même veine, pour faire utiliser un Panel simulant un TSplitter, suffit de déplacer dans le sens contraire de l'Align

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TFrmTest.PanelSplitHorizontalMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
         SendMessage(PanelSplitHorizontal.handle, WM_LButtonUp, 0, 0);
         SendMessage(PanelTop.handle, WM_NCLButtonDown, HTBOTTOM, 0);
    end;
     
    procedure TFrmTest.PanelSplitVerticalMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
         SendMessage(PanelSplitVertical.handle, WM_LButtonUp, 0, 0);
         SendMessage(PanelLeft.handle, WM_NCLButtonDown, HTRight, 0);
    end;
    C'est un vieux code de mon maître d'apprentissage, les Splitter délimitant un Zone Mère MDI provoquait en D4 des erreurs d'affichage (on voyait dans zone MDI une sorte "d'écho" des splitters (double dessin)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/02/2015, 13h48
  2. Déplacer des contrôles en mode RUN
    Par ptisinge dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 15/10/2006, 09h48
  3. Run-time error '5':
    Par zazaraignée dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 16/01/2006, 13h53
  4. Migration Access 97 vers SQL Server + Access Run Time
    Par KiDiBoo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/10/2005, 09h05
  5. problème java run time environment
    Par abrmed dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 19/08/2005, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo