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

VB 6 et antérieur Discussion :

redimentionner un UserControl


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Par défaut redimentionner un UserControl
    bonjour à tous,
    est ce que quelqu'un peut m'aider à trouver comment modifier la taille d'un UserControl par la souris en mode execution et non pas en mode conception .
    merci d'avance pour vos aides .

  2. #2
    Membre Expert
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Par défaut
    pour ma part, j'utilise une variable booléenne qui est changé sur mousedown et mouse up.

    ensuite, en fonction de cette variable, tu met quelque-chose dans l'évenement mouse-move.
    je te conseille de mettre où de faire apparaitre une petite shade dans le coins de ton controle pour plus de lisibilité.

    voilà un exemple:
    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
     dim isredim as boolean
    private sub form_load()
    isredim=false
    end sub
    private sub form_mousedown(x as integer, y as integer, shift as integer,...) 'là, je sait plus exactements tous les parametres
    if x>mashade.left and x<mashade.left+mashade.width and y> mashade.top and y< masahde.top+mashade.height then isredim=true
    end sub
    private sub form_mouseup(x as integer, y as integer, shift as integer,...) 'là, je sait plus exactements tous les parametres
    isredim=false
    end sub
    private sub form_mousemouve( X as integer, Y as integer)
    if isredim=true then 
            moncontrole.width=x-momcontrole.left
            moncontrole.height=y-moncontrole.top
            mashade.top=y
            mashade.left=x
    end if
    end sub
    salut et bonne chance

  3. #3
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2005
    Messages : 64
    Par défaut
    salut,
    j'ai trouvé un code sur www.vbasic.org

    déclaration api
    Public Const SWP_DRAWFRAME = &H20
    Public Const SWP_NOMOVE = &H2
    Public Const SWP_NOSIZE = &H1
    Public Const SWP_NOZORDER = &H4
    Public Const SWP_FLAGS = SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME

    Public Const GWL_STYLE = (-16)
    Public Const WS_THICKFRAME = &H40000


    Public Declare Function GetWindowLong _
    Lib "user32" _
    Alias "GetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long) _
    As Long

    Public Declare Function SetWindowLong _
    Lib "user32" _
    Alias "SetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) _
    As Long


    Public Declare Function SetWindowPos _
    Lib "user32" _
    (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
    ByVal x As Long, ByVal Y As Long, ByVal cx As Long, _
    ByVal cy As Long, ByVal wFlags As Long) _
    As Long
    utilise cette fonction :
    Private Sub Retaillable(ctrl As Control, redimCtr As Boolean)
    Dim lngStyle As Long
    Dim x As Long

    'A) Tu récupères le style de ton contrôle
    lngStyle = GetWindowLong(ctrl.hwnd, GWL_STYLE)

    'B) On modifie le Style
    If redimCtr Then
    lngStyle = lngStyle Or WS_THICKFRAME
    Else
    lngStyle = lngStyle Xor WS_THICKFRAME
    End If

    'C) On met à Jour
    x = SetWindowLong(ctrl.hwnd, GWL_STYLE, lngStyle)
    x = SetWindowPos(ctrl.hwnd, Form1.hwnd, 0, 0, 0, 0, SWP_FLAGS)
    End Sub
    pour C
    '**************************************************
    '* NOM : RedimCtl
    '* DATE : 14/11/1998
    '*
    '* AUTEUR : Philippe Valar
    '*
    '* CODE TROUVE SUR "Le petit monde de Visual Basic"
    '* http://www.vbasic.org
    '*
    '* DESCRIPTION :
    '* Ce code permet de redimensionner sur la feuille
    '* certains contrôles durant l'exécution du
    '* programme.
    '*
    '**************************************************
    [/quote]

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Par défaut
    Merci pour vos réponses je vai essayer d'appliquer les deux methodes.

Discussions similaires

  1. UserControl dans un TableLayoutPanel pour redimentionnement
    Par juniorAl dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/11/2008, 10h25
  2. XMLRAD equivalent usercontrol ASp .NET
    Par le-roy_a dans le forum XMLRAD
    Réponses: 10
    Dernier message: 10/12/2004, 14h09
  3. [BCB6]Redimentionnement manuel d'un composant TImage
    Par vsavoir dans le forum C++Builder
    Réponses: 4
    Dernier message: 22/09/2004, 11h55
  4. Réponses: 12
    Dernier message: 18/03/2004, 15h09
  5. [VB6] [UserControl] Évènements personnalisés
    Par Frankywinky dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/05/2003, 17h56

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