Jump to content

Lukasb14

Members
  • Gesamte Inhalte

    5
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von Lukasb14

  1. vor 16 Stunden schrieb daabm:

    Du könntest ein globales (Script-Scope) Array erstellen, in dem Du [PSCustomObject]@{} speicherst, die alle von Dir benötigten Objekte enthalten. Das kannst Du in Where-Object pipen mit $_.Name -eq 'Text2'.

    Oder Du erstellst ein globales [PSCustomObject]{}, dem Du jedes Label als Member hinzufügst, dann kannst Du mit $Object.LabelName direkt auf alle seine Eigenschaften zugreifen: $Object.Text2.posx oder so :-) Hier gibt es leider zu viele Wege nach Rom...

    Danke für die Hilfe leider hab ich noch eher wenig mit PSCustomObject gearbeitet, habe nun folgendes gemacht

    function Button{
        param(
        [parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] $Name,
        [parameter(Mandatory=$true)][ValidateRange(0,300)] $posx,
        [parameter(Mandatory=$true)][ValidateRange(0,450)] $posy,
        [parameter(Mandatory=$true)][ValidateRange(0,300)] $Sizex,
        [parameter(Mandatory=$true)][ValidateRange(0,450)] $Sizey,
        [parameter(Mandatory=$true)][ValidateSet($true, $false)]$Visable,
        [parameter(Mandatory=$true)][ValidateSet("OK", "Cancel", "None")]$Result,
        [AllowEmptyString()][ValidateSet($true, $false)]$AddClick,
        [AllowEmptyString()]$Click
        )
    
        $ButtonName = New-Object System.Windows.Forms.Button
        $ButtonName.Name = "Button$Name"
        $ButtonName.Location = New-Object System.Drawing.Point($posx,$posy)
        $ButtonName.Size = New-Object System.Drawing.Size($Sizex,$Sizey)
        $ButtonName.Text = $Name
        $ButtonName.DialogResult = $Result
        if($AddClick -eq $true){
            $ButtonName.add_click({
            $Click
            })
        }
        if($Visable -eq $true){$form.Controls.Add($ButtonName)}
    
        [PSCustomObject]@{
            Name = $ButtonName.Name
            Location = $ButtonName.Location 
            Size = $ButtonName.Size 
            Text = $ButtonName.Text 
            DialogResult = $ButtonName.DialogResult 
            add_click = $ButtonName.add_click
        }
    
    }
    Button -Name "OK" -posx "75" -posy "385" -Sizex "75" -Sizey "23" -Visable True -Result OK
    Button -Name "Cancel" -posx "150" -posy "385" -Sizex "75" -Sizey "23" -Visable True -Result Cancel
    Button -Name "NoPrinter" -posx "10" -posy "305" -Sizex "260" -Sizey "23" -Visable True -Result None -AddClick True -Click "$form.Controls.Remove([PSCustomObject]'ButtonOK')"
    

    Kannst mir vielleicht nochmal helfen, wie ich das PSCustomObject mit dem Namen "ButtonOK" abrufe.

  2. Hallo, danke für die ganzen Vorschläge, jedoch geht es mir nicht um den Prameter. Da ich hier "function" verwende, kann ich einen speziellen Button oder ein Label im weiteren Code nicht mehr aufrufen um es der Form hinzuzufügen oder zu entfernen.

    ZB möchte ich in folgender Zeile bei einem Klick auf den Button "NoPrinter" das Label mit dem "Text2" anzeigen lassen.

    Button -Name "NoPrinter" -posx "10" -posy "305" -Sizex "260" -Sizey "23" -Visable True -Result None -AddClick True -Click "$form.Controls.Add(Text2)"

    Wie kann ich herausfinden welches Label den "Text2" hat 

    Alle Labels werden vereinfacht gesagt so erstellt:

    function Label{
    $LabelName = New-Object System.Windows.Forms.Label
    }
    

    Ein "Get-Object System.Windows.Form.Label" gibt es anscheinend nicht :(

  3. vor 12 Minuten schrieb Sunny61:

    Schau doch mal in diesen Thread: https://stackoverflow.com/questions/56640925/creating-a-label-which-disappears-after-a-few-seconds

     

    $label.Visible = $false

     

    Du hast Visable geschrieben, ersetz das doch mal mit *visible*. ;)

    Hallo dies ist nur eine Variable die übergeben wird sollte also egal sein wie diese geschrieben wird, habs trotzdem mal geändert und hab das selbe Thema ;)

    Außerdem ist sie auch sichtbar wenn ich sie auf true setze, möchte aber nicht dass sie von anfang an angezeigt wird.

    Wie im Code ersichtlich möchte ich mit einem Klick auf dem Button "NoPrinter", dass das Label mit dem Namen "Text2" sichtbar wird. Weiß allerdings nicht wie ich herausfinde wie ich genau dieses Label sichtbar mache. Folgendes funktioniert leider nicht:

    $form.Controls.Add(Text2)
  4. Hallo Leute,

     

    vielleicht kann mir hier jemand weiter helfen bzw. einen besseren Code vorschlagen. Vielen Dank im Voraus

     

    Ich habe/möchte eine Powershell GUI mit functions erstellen, jedoch weiß ich nicht wie ich Beispielsweise ein Label ein/ausblenden kann (Siehe letzten 15 Zeilen im Code)

    Hier mein derzeitiger Code:

    Add-Type -AssemblyName System.Windows.Forms
    Add-Type -AssemblyName System.Drawing
    
    $Windowname = "Script"
    $xmax = "300"                                                #Am besten mit STRG+H alle Zahlen von "300" auf die gewünschte Größe ersetzen
    $ymax = "450"                                                #Am besten mit STRG+H alle Zahlen von "450" auf die gewünschte Größe ersetzen
    
    function Button{
        param(
        [parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] $Name,
        [parameter(Mandatory=$true)][ValidateRange(0,300)] $posx,
        [parameter(Mandatory=$true)][ValidateRange(0,450)] $posy,
        [parameter(Mandatory=$true)][ValidateRange(0,300)] $Sizex,
        [parameter(Mandatory=$true)][ValidateRange(0,450)] $Sizey,
        [parameter(Mandatory=$true)][ValidateSet($true, $false)]$Visable,
        [parameter(Mandatory=$true)][ValidateSet("OK", "Cancel", "None")]$Result,
        [AllowEmptyString()][ValidateSet($true, $false)]$AddClick,
        [AllowEmptyString()]$Click
        )
    
        $ButtonName = "Button" + $Name
        $ButtonName = New-Object System.Windows.Forms.Button
        $ButtonName.Location = New-Object System.Drawing.Point($posx,$posy)
        $ButtonName.Size = New-Object System.Drawing.Size($Sizex,$Sizey)
        $ButtonName.Text = $Name
        $ButtonName.DialogResult = $Result
        if($AddClick -eq $true){
            $ButtonName.add_click({
            $Click
            })
        }
        if($Visable -eq $true){$form.Controls.Add($ButtonName)}
    }
    
    function Label{
        param(
        [parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] $Name,
        [parameter(Mandatory=$true)][ValidateRange(0,300)] $posx,
        [parameter(Mandatory=$true)][ValidateRange(0,450)] $posy,
        [parameter(Mandatory=$true)][ValidateRange(0,300)] $Sizex,
        [parameter(Mandatory=$true)][ValidateRange(0,450)] $Sizey,
        [parameter(Mandatory=$true)][ValidateSet($true, $false)]$Visable,
        [AllowEmptyString()] $Text
        )
    
        $LabelName = "Label" + $Name
        $LabelName = New-Object System.Windows.Forms.Label
        $LabelName.Location = New-Object System.Drawing.Point($posx,$posy)
        $LabelName.Size = New-Object System.Drawing.Size($Sizex,$Sizey)
        $LabelName.Text = $Text
        if($Visable -eq $true){$form.Controls.Add($LabelName)}
    }
    
    function Box{
        param(
        [parameter(Mandatory=$true)][ValidateNotNullOrEmpty()] $Name,
        [parameter(Mandatory=$true)][ValidateRange(0,300)] $posx,
        [parameter(Mandatory=$true)][ValidateRange(0,450)] $posy,
        [parameter(Mandatory=$true)][ValidateRange(0,300)] $Sizex,
        [parameter(Mandatory=$true)][ValidateRange(0,450)] $Sizey,
        [parameter(Mandatory=$true)][ValidateSet($true, $false)]$Visable,
        [parameter(Mandatory=$true)][ValidateSet("List", "Text", "Search")]$Version,
        [AllowEmptyString()] $input,
        [AllowEmptyString()] $Text
        )
    
        if($Version -eq "List"){
            $ListBoxName = "ListBox" + $Name
            $ListBoxName = New-Object System.Windows.Forms.ListBox
            $ListBoxName.Location = New-Object System.Drawing.Point($posx,$posy)
            $ListBoxName.Size = New-Object System.Drawing.Size($Sizex,$Sizey)
            $ListBoxName.SelectionMode = 'MultiExtended'
            foreach ($i in $input){[void] $ListBoxName.Items.Add($i)}
            $listBox.Height = $Sizey
            $form.Topmost = $true
            if($Visable -eq $true){$form.Controls.Add($ListBoxName)}
        }elseif($Version -eq "Text"){
            $TextBoxName = "TextBox" + $Name
            $TextBoxName = New-Object System.Windows.Forms.TextBox
            $TextBoxName.Location = New-Object System.Drawing.Point($posx,$posy)
            $TextBoxName.Size = New-Object System.Drawing.Size($Sizex,$Sizey)
            $form.Topmost = $true
            if($Visable -eq $true){$form.Controls.Add($TextBoxName)}
        }
    }
    
    $form = New-Object System.Windows.Forms.Form
    $form.Text = $Windowname
    $form.Size = New-Object System.Drawing.Size($xmax,$ymax)
    $form.StartPosition = 'CenterScreen'
    
    Button -Name "OK" -posx "75" -posy "385" -Sizex "75" -Sizey "23" -Visable True -Result OK
    Button -Name "Cancel" -posx "150" -posy "385" -Sizex "75" -Sizey "23" -Visable True -Result Cancel
    Button -Name "NoPrinter" -posx "10" -posy "305" -Sizex "260" -Sizey "23" -Visable True -Result None -AddClick True -Click "$form.Controls.Add(Text2)"
    
    Label -Name "Text1" -posx "10" -posy "10" -Sizex "280" -Sizey "30" -Visable True -Text 'Wähle die Drucker aus
    (Mit "STRG" können mehrere ausgewählt werden)'
    Label -Name "Text2" -posx "10" -posy "330" -Sizex "280" -Sizey "30" -Visable False -Text 'Gib den vollständigen Druckernamen ein:'
    
    Box -Name "Text" -posx "10" -posy "350" -Sizex "260" -Sizey "20" -Visable True -Version Text
    
    $result = $form.ShowDialog()

     

×
×
  • Neu erstellen...