Changer la couleur barre de titre d'une form

namo2015 Messages postés 13 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 16 novembre 2015 - 9 nov. 2015 à 23:14
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 17 nov. 2015 à 07:22
Bonjour,
Peut-on personnaliser la barre de titre des form comme par exemple changer la couleur et y ajouter des contrôles. Si oui comment le faire.
J'ai besoin de vos aides.

Merci.
A voir également:

7 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
10 nov. 2015 à 08:00
0
namo2015 Messages postés 13 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 16 novembre 2015
11 nov. 2015 à 12:11
Merci, cs_Le Pivert, pour ton aide.

Avec ta source j'ai fait une Form avec FormBorderStyle à none, j'y ajoute des boutons réduire agrandir et fermer, aussi avec déplacement possible de la Form.
Cependant je rencontre un problème. Le WindowState de ma Form est sur Maximized, quand je lance l'application ma Form occupe tout l'écran de l'ordi (on ne vois même pas la barre des tâches). Je voudrais qu'elle occupe l'écran comme les autres applications.
Ensuite comment faire pour l'agrandir et la réduire avec la souris sur ses bords.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
11 nov. 2015 à 14:09
Voir ceci:

https://vbnetpourtous.wordpress.com/2013/01/04/les-proprietes-dun-formulaire/


Public Class Form1
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Me.ShowInTaskbar = False 'barre de tâche visible
    End Sub
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Me.Close()
    End Sub
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable
        Me.AutoSize = True
        Me.SizeGripStyle = Windows.Forms.SizeGripStyle.Show
    End Sub
    End Class

0
namo2015 Messages postés 13 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 16 novembre 2015
11 nov. 2015 à 22:34
Je m'explique.

J'ai une form dont le FormBorderStyle est a None. Voir l'image(ressemble un peu à celle de VS 2013):


Au lancement de l'application la Form s'ouvre en Maximized mais elle occupe toute la surface de l'écran comme suit:


Quand j'utilise la propriété ShowInTaskbar voila ce que ça donne:


On ne voit pas bien les extrémités de la Form. Je veux une Form en Maximized qui s'ouvre dans les limite du bureau.

Deuxièmement, j'aimerais étirer les bordure (haut, gauche, bas, droit) de ma Form avec la souris comme pour les Forms Sizable.

En gros j'ai une Form sans bordure que j'aimerais qu'elle se comporte comme une Form normale. Sans bordure parce qu'elle me permet de créer ma propre barre de titre.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
12 nov. 2015 à 07:44
As-tu consulté le site que je t'ai indiqué?
Je ne le pense pas, car tu aurais pu lire ceci:

None : Une fenêtre sans bordure qui ne peut pas être redimensionnée. Cette valeur est rarement utilisée :

Si tu veux imposer une taille il faut utiliser ceci:

Me.MinimumSize = New Size(400, 300 + SystemInformation.CaptionHeight)'taille a adapter à ton écran

et non Maximized

@+ Le Pivert
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
12 nov. 2015 à 11:54
Voilà le code:

Public Class Form1
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim Width As String
        Dim Height As String
        Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width.ToString()
        Height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height.ToString()
        Me.ShowInTaskbar = False 'barre de tâche visible
        Me.MinimumSize = New Size(CInt(CDbl(Width) - 10), (CInt(CDbl(Height) - 50) + SystemInformation.CaptionHeight)) 'taille  adapter à ton écran 
        Me.Location = New Point(0, 0) 'location du Form
    End Sub
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Me.Close()
    End Sub
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable
        Me.AutoSize = True
        Me.SizeGripStyle = Windows.Forms.SizeGripStyle.Show
    End Sub
End Class
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 11/11/2015 à 23:57
Bonjour,
1) je suis développeur sous VB6, pas sous VB.Net
2) sous VB6, l'utilisation du contrôle sysinfo nous permet de connaître les positions et dimensions de l'espace de travail réel (qui dépend donc également de la position et des dimensions de la barre des tâches) ===>> SysInfo1.WorkAreaTop, left, height et width
Tout cela tient compte (et s'adapte) de l' "état" (configuration) de la barre des tâches (toujours visible, escamotable, etc ...)
3) il est important d'avoir ces informations lorsque l'appli est destinée à être distribuée car la barre des tâches peut être configurée très différemment d'un pc à l'autre ... sa position (verticale, horizontale, etc ...) également. Ces informations sont donc recueillies en mode exécution, puis le form est positionné comme il le faut à partir de ces renseignements.
4) si ton appli est à distribuer, il serait très maladroit d'inviter le client à positionner le Form à la souris !
5) je crois comprendre que, sous VB.Net, l'équivalent de ce que nous avons sous VB6 est ceci :
https://msdn.microsoft.com/en-us/library/system.windows.forms.screen.workingarea%28v=vs.110%29.aspx
sers-t-en

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
namo2015 Messages postés 13 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 16 novembre 2015
16 nov. 2015 à 22:53
Effectivement, ucfoutu, Screen.PrimaryScreen.WorkingArea est l'équivalent vb.net.

Vos deux solution marche pour agrandir la form dans les limites du bureau.

Ayant résolu le problème d'agrandissement, mes recherches sont portées sur le redimensionnement de la forme par ses 4 cotés et 4 angles.
Voici ce que j'ai trouvé:
Public Class Form1

    Private Declare Function ReleaseCapture Lib "user32" () As Integer
    Private Const HTCAPTION As Integer = 2
    Private Const WM_NCLBUTTONDOWN As Integer = &HA1S
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByRef lParam As Integer) As Integer

    Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown

        If e.Button = Windows.Forms.MouseButtons.Left And Me.Cursor = Cursors.Default Then
            ReleaseCapture()

            SendMessage(Me.Handle.ToInt32, WM_NCLBUTTONDOWN,
            HTCAPTION, 0)
        End If
    End Sub

    Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
        'Definir le champs du resize <
        If e.Location.X > (Me.Size.Width - 5) And e.Location.Y > (Me.Size.Height - 5) Then
            ' changement du cursor (souris)
            Cursor = Cursors.SizeNWSE
            ' Si je clic sur le bouton gauche
            If e.Button = Windows.Forms.MouseButtons.Left Then
                ' redimentionnement de la forme
                Me.ClientSize = New System.Drawing.Size(e.Location.X, e.Location.Y)
            End If
        Else
            'Si non le cursor redeviens normal
            Cursor = Cursors.Default
        End If
    End Sub

End Class


Avec ce code j'arrive à déplacer la form et à la redimensionner à partir de son du coin inférieur droit.
je ne maitrise pas bien encore les coordonnées et les localisations. J'ai besoin de vos aides pour m'aider à permettre le redimensionnement de ma form par ses 4 cotés et ses 4 angle à partir de ce code.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 nov. 2015 à 07:22
Ton espace disponible (workingarea) a des propriétés (celles d'un rectangle) que tu trouveras ici :
https://msdn.microsoft.com/en-us/library/system.drawing.rectangle
(top,Left,width,Height)
Ton Form également.
Le reste coule tellement de source !
0
Rejoignez-nous