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

C++Builder Discussion :

repositionner automatiquement des composants a l'ecran


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut repositionner automatiquement des composants a l'ecran
    Voici un morceau de programme permettant d'avoir toujours visible a l'ecran des composants places sur un TForm, un TImage beaucoup plus grand que l'ecran est place sur le TForm du coup les composants disparaissent de la partie visible quand on deplace le ScrollBar, un TPanel avec d'autre composants places dessus est deplacable et reste dans la position dans laquelle on la place quelque soit la position du ScrollBar, un exemple valant mieux qu'un long discour voici le code
    Le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    //---------------------------------------------------------------------------
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ExtCtrls.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published: // IDE-managed Components
         TButton *Button1;
         TImage *Image1;
         TLabel *Label1;
         TPanel *Panel1;
         TButton *Button2;
         void __fastcall Panel1MouseDown(TObject *Sender, TMouseButton Button,
              TShiftState Shift, int X, int Y);
         void __fastcall Button1Click(TObject *Sender);
         void __fastcall Button2Click(TObject *Sender);
    private: // User declarations
    public:  // User declarations
         __fastcall TForm1(TComponent* Owner);
         void __fastcall WMVScroll(TMessage &Msg);
         BEGIN_MESSAGE_MAP
         MESSAGE_HANDLER(WM_VSCROLL, TMessage, WMVScroll)
         END_MESSAGE_MAP(TForm);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    le .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
         : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::WMVScroll(TMessage &Msg)
    {
    int a = Panel1->Top; // doit etre place imperativement avant la ligne suivante
    // afin de conserver la position sur l'ecran
    TForm::Dispatch(&Msg); // imperatif sinon le ScrollBar ne defile pas
    // (Form1->VertScrollBar->Increment / (Form1->VertScrollBar->Range - Form1->ClientHeight))
    // formule permettant de calculer la position en hauteur dans la Form quelque soit
    // la position du SCrollBar afin d'avoir le ou les composants toujours a l'ecra
    Button1->Top = GetScrollPos(Form1->Handle, SB_VERT) * (Form1->VertScrollBar->Increment / (Form1->VertScrollBar->Range - Form1->ClientHeight));
    Label1->Top = GetScrollPos(Form1->Handle, SB_VERT) * (Form1->VertScrollBar->Increment / (Form1->VertScrollBar->Range - Form1->ClientHeight));
    Panel1->Top = a + GetScrollPos(Form1->Handle, SB_VERT) * (Form1->VertScrollBar->Increment / (Form1->VertScrollBar->Range - Form1->ClientHeight));
    Label1->Caption = Msg.WParamLo;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Panel1MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    // permet de deplacer le Panel
    ReleaseCapture();
    SendMessage(Panel1->Handle, WM_SYSCOMMAND, 0xF012, 0);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    // affiche le Panel avec un effet ascenseur
    Panel1->BringToFront();
    Panel1->Top = 30;
    Panel1->Left = 10;
    Panel1->Height = 0;
    for(int i = 0; i <= 130; i++)
         {
         Panel1->Height = i;
         Panel1->Repaint();
         }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    // le Button2 est place sur le Panel
    // efface le Panel avec un effet ascenseur
    for(int i = 130; i >= 0; i--)
         {
         Panel1->Height = i;
         Panel1->Repaint();
         }
    Panel1->Height = 0;
    }
    //---------------------------------------------------------------------------

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Le code pour gerer verticalement et horizontalement la postion des composants
    le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    //---------------------------------------------------------------------------
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ExtCtrls.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published: // IDE-managed Components
         TButton *Button1;
         TImage *Image1;
         TLabel *Label1;
         TPanel *Panel1;
         TButton *Button2;
         void __fastcall Panel1MouseDown(TObject *Sender, TMouseButton Button,
              TShiftState Shift, int X, int Y);
         void __fastcall Button1Click(TObject *Sender);
         void __fastcall Button2Click(TObject *Sender);
    private: // User declarations
    public:  // User declarations
         __fastcall TForm1(TComponent* Owner);
         void __fastcall WMVScroll(TMessage &Msgv);
         void __fastcall WMHScroll(TMessage &Msgh);
         BEGIN_MESSAGE_MAP
         MESSAGE_HANDLER(WM_VSCROLL, TMessage, WMVScroll)
         MESSAGE_HANDLER(WM_HSCROLL, TMessage, WMHScroll)
         END_MESSAGE_MAP(TForm);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    le .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
         : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::WMVScroll(TMessage &Msgv)
    {
    int a = Panel1->Top; // doit etre place imperativement avant la ligne suivante
    // afin de conserver la position sur l'ecran
    TForm::Dispatch(&Msgv); // imperatif sinon le ScrollBar ne defile pas
    // (Form1->VertScrollBar->Increment / (Form1->VertScrollBar->Range - Form1->ClientHeight))
    // formule permettant de calculer la position en hauteur dans la Form quelque soit
    // la position du SCrollBar afin d'avoir le ou les composants toujours a l'ecra
    Button1->Top = GetScrollPos(Form1->Handle, SB_VERT) * (Form1->VertScrollBar->Increment / (Form1->VertScrollBar->Range - Form1->ClientHeight));
    Label1->Top = GetScrollPos(Form1->Handle, SB_VERT) * (Form1->VertScrollBar->Increment / (Form1->VertScrollBar->Range - Form1->ClientHeight));
    Panel1->Top = a + GetScrollPos(Form1->Handle, SB_VERT) * (Form1->VertScrollBar->Increment / (Form1->VertScrollBar->Range - Form1->ClientHeight));
    Label1->Caption = Msgv.WParamLo;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Panel1MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    // permet de deplacer le Panel
    ReleaseCapture();
    SendMessage(Panel1->Handle, WM_SYSCOMMAND, 0xF012, 0);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    // affiche le Panel avec un effet ascenseur
    Panel1->BringToFront();
    Panel1->Top = 30;
    Panel1->Left = 10;
    Panel1->Height = 0;
    for(int i = 0; i <= 130; i++)
         {
         Panel1->Height = i;
         Panel1->Repaint();
         }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    // le Button2 est place sur le Panel
    // efface le Panel avec un effet ascenseur
    for(int i = 130; i >= 0; i--)
         {
         Panel1->Height = i;
         Panel1->Repaint();
         }
    Panel1->Height = 0;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::WMHScroll(TMessage &Msgh)
    {
    int b = Button1->Left;
    int c = Label1->Left;
    int a = Panel1->Left; // doit etre place imperativement avant la ligne suivante
    // afin de conserver la position sur l'ecran
    TForm::Dispatch(&Msgh); // imperatif sinon le ScrollBar ne defile pas
    // (Form1->HorzScrollBar->Increment / (Form1->HorzScrollBar->Range - Form1->ClientHeight))
    // formule permettant de calculer la position en hauteur dans la Form quelque soit
    // la position du SCrollBar afin d'avoir le ou les composants toujours a l'ecra
    Button1->Left = b + GetScrollPos(Form1->Handle, SB_HORZ) * (Form1->HorzScrollBar->Increment / (Form1->HorzScrollBar->Range - Form1->ClientHeight));
    Label1->Left = c + GetScrollPos(Form1->Handle, SB_HORZ) * (Form1->HorzScrollBar->Increment / (Form1->HorzScrollBar->Range - Form1->ClientHeight));
    Panel1->Left = a + GetScrollPos(Form1->Handle, SB_HORZ) * (Form1->HorzScrollBar->Increment / (Form1->HorzScrollBar->Range - Form1->ClientHeight));
    Label1->Caption = Msgh.WParamLo;
    }
    //---------------------------------------------------------------------------

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Apres teste le code epure au maximum
    le .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
         : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::WMVScroll(TMessage &Msgv)
    {
    int c = Panel3->Top;
    int b = Panel2->Top;
    int a = Panel1->Top; // doit etre place imperativement avant la ligne suivante
    // afin de conserver la position sur l'ecran
    TForm::Dispatch(&Msgv); // imperatif sinon le ScrollBar ne defile pas
    // (Form1->VertScrollBar->Increment / (Form1->VertScrollBar->Range - Form1->ClientHeight))
    // formule permettant de calculer la position en hauteur dans la Form quelque soit
    // la position du SCrollBar afin d'avoir le ou les composants toujours a l'ecra
    Panel1->Top = a;
    Panel2->Top = b;
    Panel3->Top = c;
    // + GetScrollPos(Form1->Handle, SB_VERT) * (Form1->VertScrollBar->Increment / (Form1->VertScrollBar->Range - Form1->ClientHeight));
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::WMHScroll(TMessage &Msgh)
    {
    int c = Panel3->Left;
    int d = Panel2->Left;
    int a = Panel1->Left; // doit etre place imperativement avant la ligne suivante
    // afin de conserver la position sur l'ecran
    TForm::Dispatch(&Msgh); // imperatif sinon le ScrollBar ne defile pas
    // (Form1->HorzScrollBar->Increment / (Form1->HorzScrollBar->Range - Form1->ClientHeight))
    // formule permettant de calculer la position en hauteur dans la Form quelque soit
    // la position du SCrollBar afin d'avoir le ou les composants toujours a l'ecra
    Panel1->Left = a;
    Panel2->Left = d;
    Panel3->Left = c;
    // GetScrollPos(Form1->Handle, SB_HORZ) * (Form1->HorzScrollBar->Increment / (Form1->HorzScrollBar->Range - Form1->ClientHeight));
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    // affiche le Panel avec un effet ascenseur
    Panel2->BringToFront();
    Panel2->Top = 60;
    Panel2->Left = 10;
    Panel2->Height = 0;
    for(int i = 0; i <= 130; i++)
         {
         Panel2->Height = i;
         Panel2->Repaint();
         }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
    // le Button2 est place sur le Panel
    // efface le Panel avec un effet ascenseur
    for(int i = 130; i >= 0; i--)
         {
         Panel2->Height = i;
         Panel2->Repaint();
         }
    Panel2->Height = 0;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Panel2MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    // permet de deplacer le Panel
    ReleaseCapture();
    SendMessage(Panel2->Handle, WM_SYSCOMMAND, 0xF012, 0);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    // affiche le Panel avec un effet ascenseur
    Panel3->BringToFront();
    Panel3->Top = 60;
    Panel3->Left = 10;
    Panel3->Height = 0;
    for(int i = 0; i <= 130; i++)
         {
         Panel3->Height = i;
         Panel3->Repaint();
         }
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button5Click(TObject *Sender)
    {
    // le Button2 est place sur le Panel
    // efface le Panel avec un effet ascenseur
    for(int i = 130; i >= 0; i--)
         {
         Panel3->Height = i;
         Panel3->Repaint();
         }
    Panel3->Height = 0;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Panel3MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    // permet de deplacer le Panel
    ReleaseCapture();
    SendMessage(Panel3->Handle, WM_SYSCOMMAND, 0xF012, 0);
    }
    //---------------------------------------------------------------------------
    le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    //---------------------------------------------------------------------------
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ExtCtrls.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published: // IDE-managed Components
         TPanel *Panel1;
         TButton *Button1;
         TButton *Button2;
         TButton *Button3;
         TImage *Image1;
         TPanel *Panel2;
         TButton *Button4;
         TPanel *Panel3;
         TButton *Button5;
         void __fastcall Button1Click(TObject *Sender);
         void __fastcall Button4Click(TObject *Sender);
         void __fastcall Panel2MouseDown(TObject *Sender, TMouseButton Button,
              TShiftState Shift, int X, int Y);
         void __fastcall Button2Click(TObject *Sender);
         void __fastcall Button5Click(TObject *Sender);
         void __fastcall Panel3MouseDown(TObject *Sender, TMouseButton Button,
              TShiftState Shift, int X, int Y);
    private: // User declarations
    public:  // User declarations
         __fastcall TForm1(TComponent* Owner);
         void __fastcall WMVScroll(TMessage &Msgv);
         void __fastcall WMHScroll(TMessage &Msgh);
         BEGIN_MESSAGE_MAP
         MESSAGE_HANDLER(WM_VSCROLL, TMessage, WMVScroll)
         MESSAGE_HANDLER(WM_HSCROLL, TMessage, WMHScroll)
         END_MESSAGE_MAP(TForm);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif

  4. #4
    Membre très actif Avatar de Argol_Medusa
    Homme Profil pro
    Ingénieur Radiofréquences
    Inscrit en
    Août 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Radiofréquences
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 208
    Par défaut
    Bonjour Blondelle,

    Merci beaucoup pour le code, j'aurais 2 questions :

    Est-ce que tu pourrais m'expliquer rapidement en détaillant les commandes suivantes s'il te plait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
         BEGIN_MESSAGE_MAP
         MESSAGE_HANDLER(WM_VSCROLL, TMessage, WMVScroll)
         END_MESSAGE_MAP(TForm);
     
    void __fastcall TForm1::Panel1MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
       // permet de deplacer le Panel
       ReleaseCapture();
       SendMessage(Panel1->Handle, WM_SYSCOMMAND, 0xF012, 0);
    }
    Parce que tu viens de me faire découvrir un truc génial que je faisais à la main avec onmousedown on mouseup et onmousemove, et pour le coup je crois que je réinventais la roue depuis des années

    ça marche aussi avec d'autres éléments? (TImage / TForm etc. )


    Seconde question : comment est-ce que l'on active les ascenseurs sur un TForm ?

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut Argol Medusa
    Merci pour l'interet que tu porte a ces quelques lignes de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
         void __fastcall WMVScroll(TMessage &Msgv);
         BEGIN_MESSAGE_MAP
         MESSAGE_HANDLER(WM_VSCROLL, TMessage, WMVScroll)
         END_MESSAGE_MAP(TForm);
    et
    void __fastcall TForm1::WMVScroll(TMessage &Msgv)
    {
    int c = Panel3->Top;
    int b = Panel2->Top;
    int a = Panel1->Top; // doit etre place imperativement avant la ligne suivante
    // afin de conserver la position sur l'ecran
    TForm::Dispatch(&Msgv); // imperatif sinon le ScrollBar ne defile pas
    // (Form1->VertScrollBar->Increment / (Form1->VertScrollBar->Range - Form1->ClientHeight))
    // formule permettant de calculer la position en hauteur dans la Form quelque soit
    // la position du SCrollBar afin d'avoir le ou les composants toujours a l'ecran
    Panel1->Top = a;
    Panel2->Top = b;
    Panel3->Top = c;
    // + GetScrollPos(Form1->Handle, SB_VERT) * (Form1->VertScrollBar->Increment / (Form1->VertScrollBar->Range - Form1->ClientHeight));
    }
    ces lignes de code sont tire d'un exemple pour un TRichEdit et permettent d'avoir dans la zone visible de l'ecran un composant quelque soit la position du SCrollBar ici des TPanels contenant d'autres composants.
    " BEGIN_MESSAGE_MAP " est tire de l'aide en ligne est permet de recuperer " WM_VSCROLL " dans la chaine des messages Windows afin d'effectuer mon traitement perso.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void __fastcall TForm1::Panel1MouseDown(TObject *Sender,
          TMouseButton Button, TShiftState Shift, int X, int Y)
    {
       // permet de deplacer le Panel
       ReleaseCapture();
       SendMessage(Panel1->Handle, WM_SYSCOMMAND, 0xF012, 0);
    }
    permet de deplacer un composant en tenant un boutton appuie de la souris, c'est tire de " trucs et astuces de CGI " sur le site
    Je n'ai pas essaye avec d'autres composants mais je pense que c'est possible si on peut recuperer le Handle du composant exemple " Panel1->Handle "
    pour activer les SCrollBars de mon projet j'ai un TImage qui est dimensionne beaucoup plus grand que la Form j'avais besoin d'un effet Zoom c'est pour cela qu'il me fallait une barre d'outils toujours present a l'ecran quelque soit la position des SCrollBars, et surtout deplacable afin de ne pas masquer le travail en cours et que les TPanels support d'outils s'affichent et s'efface avec un effet deroulant
    j'espere avoir ete clair.

  6. #6
    Membre très actif Avatar de Argol_Medusa
    Homme Profil pro
    Ingénieur Radiofréquences
    Inscrit en
    Août 2005
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Radiofréquences
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 208
    Par défaut
    Okiii, merci beaucoup pour les infos.

    Je viens de tester sur un projet en cours pour déplacer une fenêtre transparente sans bord entière (je passe le handle de la form) et ça marche super bien, 2 lignes de code le bonheur ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //---------------------------------------------------------------------------
    void __fastcall TForm8::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
    		  int X, int Y)
    {
       ReleaseCapture();
       SendMessage(this->Handle, WM_SYSCOMMAND, 0xF012, 0);
    }
    Pour le déplacement j'utilisais jusqu'à présent ce qui est décris comme première méthode dans le CGI, mais c'est plus long =)

Discussions similaires

  1. Redimensionnement automatique des composants d'une feuille
    Par Delbeke dans le forum Vos contributions VB6
    Réponses: 3
    Dernier message: 07/06/2007, 14h15
  2. Redimensionement automatique des composants de la Tform
    Par melles dans le forum Bases de données
    Réponses: 1
    Dernier message: 10/04/2007, 17h25
  3. Probleme redimensionnement automatique des composants
    Par catwomanette dans le forum Interfaces Graphiques en Java
    Réponses: 15
    Dernier message: 07/02/2007, 10h29
  4. positionnement automatique des composants
    Par chti_juanito dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 12/06/2006, 14h01
  5. Réponses: 2
    Dernier message: 24/01/2006, 18h12

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