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 :

[MENU] Probleme avec un menu deroulant et l'option "Checked" pour un AlwaysOnTop


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    telodo
    Invité(e)
    Par défaut [MENU] Probleme avec un menu deroulant et l'option "Checked" pour un AlwaysOnTop
    Bonjour,


    Eh oui c'est encore moi ! Je souhaite ajouter une option "Always On Top" a mon programme. Disponible via le menu deroulant (MenuEditor) avec une option "coche" et "decoche".

    Dans mon Menu Editor je coche la case "Checked". Afin que mon option 'Always On Top' soit un menu a cocher/decocher.

    Par defaut AlwaysOnTop (nom de mon option) doit etre coche, et ma Form1 doit etre visible au premier plan. Cependant si l'utilisateur ne souhaite pas cette option il peut choisir de la decocher...



    Voici le code pour faire apparaitre une fenetre visible au premier plan :



    Dans un module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Declare Sub 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)
    Global Const HWND_TOPMOST = -1
    Global Const HWND_NOTOPMOST = -2
    Global Const SWP_NOACTIVATE = &H10
    Global Const SWP_SHOWWINDOW = &H40
    Dans mon menu deroulant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub AlwaysOnTop_Click()
     
    If AlwaysOnTop.Checked = True Then
    SetWindowPos Form1.hWnd, HWND_TOPMOST, Form1.Left / 15, Form1.Top / 15, Form1.Width / 15, Form1.Height / 15, SWP_NOACTIVATE Or SWP_SHOWWINDOW
    Else: SetWindowPos Form1.hWnd, HWND_NOTOPMOST, Form1.Left / 15, Form1.Top / 15, Form1.Width / 15, Form1.Height / 15, SWP_NOACTIVATE Or SWP_SHOWWINDOW
    End If
     
    End Sub


    La premiere ligne verifie si ALwaysOnTop est coche, si oui Form1 reste visible au premier plan. Sinon elle ne l'est pas.


    Mon probleme :

    Lorsque je demarre mon programme, l'option de mon menu AlwaysOnTop est coché. Mais ma fenetre ne reste pas visible au premier plan par defaut. Lorsque je clique sur AlwaysOnTop, le menu reste coché et la fenetre reste visible au premier plan.

    Auriez-vous la solution ? J'esperes que vous aurez compris ce que je cherche !

    Menu AlwaysOnTop coche par defaut au demarrage du logiciel et donc fenetre visible toujours au premier plan. Lorsque l'on clique dessus, il se decoche et la fenetre n'a plus l'attribus toujours visible au premier plan.



    Je vous remercie d'avance et vous souhaite une agreable journee !

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut

    La propriété Checked est un booléen qui ne sert que de marqueur. Quand l'utilisateur clique sur ce menu, tu vérifies l'état de cette propriété pour déterminer l'action à prendre, en l'occurrence faire flotter la fenêtre au dessus des autres ou pas.

    Cette option est toujours disponible par programmation et le fait de cliquer dessus en mode création ne fait que déterminer un sont état par défaut : soit la valeur True. Ça ne permet pas une gestion automatique comme pour un bouton d'option (radio) ou un CheckBox. Tu dois gérer l'état du menu a mano.

  3. #3
    telodo
    Invité(e)
    Par défaut
    Rha je suis desole, mais j'ai du mal a comprendre.

    Checked n'a aucune valeur, c'est juste un marqueur.

    Donc je dois donner a mon menu une valeure, par exemple 1 = Checked et 0 = Non-Checked.

    Ensuite je teste si mon menu = 1 (checked) pour lui donner l'action a effectuer.


    Je suis un peu perdu en fait, que dois-je faire concretement ? Quel genre d'action ?

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Le menu coché à une valeur true ou false
    C'est à toi de positionner la valeur suivant tes besoins et effectuer les actions en fonction.

    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
    Private Sub AlwaysOnTop_Click()
     
    AlwaysOnTop.Checked = Not AlwaysOnTop.Checked ' bascule le menu
    ' affecte les attributs suivant l'état du menu
    If AlwaysOnTop.Checked Then
      SetWindowPos Form1.hWnd, HWND_TOPMOST, Form1.Left / 15, Form1.Top / 15, Form1.Width / 15, Form1.Height / 15, SWP_NOACTIVATE Or SWP_SHOWWINDOW
    Else
      SetWindowPos Form1.hWnd, HWND_NOTOPMOST, Form1.Left / 15, Form1.Top / 15, Form1.Width / 15, Form1.Height / 15, SWP_NOACTIVATE Or SWP_SHOWWINDOW
    End If
    End Sub
     
    'exemple positionnement au démarrage
    Private Sub Form_Load() ' de la fenêtre de test avec le menu
    ' affiche la fenêtre, coche "au dessus" pour le menu, place les attributs
    Form1.Show
    AlwaysOnTop.Checked = True
    SetWindowPos Form1.hWnd, HWND_TOPMOST, Form1.Left / 15, Form1.Top / 15, Form1.Width / 15, Form1.Height / 15, SWP_NOACTIVATE Or SWP_SHOWWINDOW
    End Sub
    Note: lors du basculement à non coché ta fenêtre reste dessus mais quand tu cliques sur l'autre (n'importe ou) elle passe derrière.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  5. #5
    telodo
    Invité(e)
    Par défaut
    Merci beaucoup Herve, decidement !

    Donc j'avais bien reussi par la suite a affiche en toujours visible au demarrage. Ce n'etait pas un probleme. Par contre le basculement de menu, ca j'avoue que j'etais loin de la solution.

    En revanche dans le Form_Load tu place "Form1.Show", est-ce obligatoire ? Le resultat est le meme, cependant cela evite t'il d'eventuels bug ou autre ?

    J'essaye tout de meme de faire un truc propre... !


    Mille merci !

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    [Edit] correction.
    Il est préférable de le gérer par le show au moment ou on le souhaite.
    [Fin Edit]

    Mais je laisse à d'autres membres le soin d'apporter des informations complémentaires s'il connaissent bien cette api.

    Bonne programmation, A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

Discussions similaires

  1. Probleme avec le menu
    Par MayOL69bg dans le forum ASP.NET
    Réponses: 3
    Dernier message: 23/03/2007, 14h34
  2. probleme avec struts menu
    Par khaledirb7 dans le forum Struts 1
    Réponses: 3
    Dernier message: 07/03/2007, 12h57
  3. [c#]probleme avec les menu toolStripItem dans une form mdi??
    Par must19 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/11/2006, 23h02
  4. [CSS] Probleme avec mon menu css
    Par otagun dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 13/05/2006, 14h37
  5. Probleme avec un menu déroulant
    Par grumly22 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/05/2006, 15h04

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