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

Scripts/Batch Discussion :

Utilisation de Class, Button [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Par défaut Utilisation de Class, Button
    Bonjour, j'ai une centaine de boutons et je voudrais réduire le nombre de lignes en les déclarant. Les noms de mes boutons sont du type $ButtonA0, $ButtonB0, $ButtonC0, $ButtonA3, $ButtonB5, etc. C'est leur positionnement dans une grid virtuelle qui détermine leur nom. J'ai essayé ceci pour déclarer le premier bouton mais ça n'a pas marché :


    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $i = -1
    Do{
     
        $i++
        $_ = "BoutonA" + $i
        write-host = $i #$_
        #$_ = New-Object System.Windows.Forms.Button
     
    }Until($i -eq 0)

    Pensez-vous qu'on puisse trouver une formule qui évite d'avoir à taper 100 lignes pour les déclarer?

    Je voudrais également créer une class pour définir les attributs communs de ces boutons afin de pas avoir à les déclarer un à un comme ceci :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ButtonA0.BackColor = "LightGray"
    $ButtonB0.BackColor = "LightGray"
    $ButtonC0.BackColor = "LightGray"
    ...
    $ButtonF17.BackColor = "LightGray"

    J'ai déjà utilisé les class dans d'autres langages. Savez-vous comment le faire en powershell svp? J'ai essayé sans succès de définir la police de caractères :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Button
    {    
        [string] $Font
     
        Button ([string] Font)
        {
            $this.Font("Arial",18,[System.Drawing.FontStyle]::Bold) 
        }
    }

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For ($i=0; $i -le 100; $i++){
        New-Variable -Name "BoutonA$i" -Value $(New-Object System.Windows.Forms.Button) -Force
        (Get-Variable -Name "BoutonA$i" -ValueOnly).Font = New-Object System.Drawing.Font("Arial", 18, [System.Drawing.FontStyle]::Bold)
    }

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    1 ligne

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For ($i=0; $i -le 100; $i++){
        (New-Variable -Name "BoutonA$i" -Value $(New-Object System.Windows.Forms.Button) -Force -PassThru).Value.Font = New-Object System.Drawing.Font("Arial", 18, [System.Drawing.FontStyle]::Bold)
    }

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    N'ayant que un powershell 3, je dérive la classe directement en c#

    Code powershell : 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
    $Source = @”
    namespace MonProjet
    {
        public partial class CustomButton : System.Windows.Forms.Button
        {
            public CustomButton()
            {
                UseVisualStyleBackColor = false;
                BackColor = System.Drawing.Color.LightGray;
            }
        }
    }
    “@
    Add-Type -TypeDefinition $Source -ReferencedAssemblies "System.Windows.Forms.dll", "System.Drawing" -Language CSharp -WarningAction SilentlyContinue
     
    $OKButton = New-Object MonProjet.CustomButton

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Par défaut
    Merci pour cette solution qui me permet d'économiser pas mal de lignes de code.
    Cette boucle convient bien pour les boutons d'une même colonne, $boutonA1, $boutonA2,...,$boutonA100.
    Par contre pour ceux d'une même ligne, $boutonB1, $boutonC1, $boutonD1,...,$boutonZ1, il faut une formule qui incrémente les 26 lettres de l'alphabet.
    Je vais voir si ça existe ou comment la créer.

    Pour ce qui est de la Class, je vais étudier ce document mise en œuvre des classes sous Powershell version 5

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    il faut une formule qui incrémente les 26 lettres de l'alphabet
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $alphabet = [char[]]([char]'A'..[char]'Z')

    Pour ce qui est de la Class, je vais étudier ce document
    C'est bien, mais ma class dérivée ne convient pas ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Taglibs] Utiliser les classes css ?
    Par PeteMitchell dans le forum Struts 1
    Réponses: 4
    Dernier message: 05/05/2007, 01h31
  2. [EJB][JONAS] EJB utilisant une classe "externe"
    Par Gregory3000 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 13/12/2004, 19h57
  3. utilisation de CLASS dans un formulaire
    Par lepierre dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 18/11/2004, 16h38
  4. utiliser des classes dont on n'a pas le source
    Par kocin dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 28/08/2004, 16h05
  5. [Debutant] probleme pour utiliser les classes d'un .jar
    Par pissek dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 12/05/2004, 18h21

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