Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 5 von 5

Thema: WinCC Pfadname auswählen

  1. #1
    Registriert seit
    12.02.2015
    Beiträge
    6
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Lächeln


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich verwende WinCC V7.0 SP3 UPD1 unter Windows XP (auf Notebook in VM) und ich habe in einem Bild ein Eingabefeld. Dort kann man einen Pfadnamen eintragen. Leider ist das bei langen Pfadnamen sehr unkomfortabel und außerdem muss man sein gewünschtes Verzeichnis ganz genau kennen.

    Ich hätte nun gerne vor dem Eingabefeld einen Button. Durch drücken soll sich dann ein Explorer-Fenster öffnen. Darin könnte man sich dann per Maus bis zum Zielverzeichnis durchklicken und den Pfadnamen mit einem weiteren Mausklick übernehmen. Vorteil: Man muss nicht 100% genau wissen wo es liegt und man muss nicht mehr den langen Pfadnamen eintragen. Wobei letzteres Optional noch möglich sein soll. Jetzt habe ich von jemand folgende Funktion bekommen die das angeblich erledigen soll.

    Function SelectFile()' File Browser via HTA
    ' Features: Works in Windows Vista and up (Should also work in XP).
    ' Fairly fast.
    ' All native code/controls (No 3rd party DLL/ XP DLL).
    ' Caveats: Cannot define default starting folder.
    ' Uses last folder used with MSHTA.EXE stored in Binary in [HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32].
    ' Dialog title says "Choose file to upload".
    Dim objExec, strMSHTA, wshShell
    SelectFile = ""
    'For use in "plain" VBScript only:
    strMSHTA = "mshta.exe ""about:<input type=file id=FILE>" _
    & "<script>FILE.click();new ActiveXObject('Scripting.FileSystemObject')" _
    & ".GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>"""
    Set wshShell = CreateObject("WScript.Shell")
    Set objExec = wshShell.Exec(strMSHTA)
    SelectFile = objExec.StdOut.ReadLine( )
    Set objExec = Nothing
    Set wshShell = Nothing
    End Function

    In meinem Bild habe ich einen Button eingfügt und unter Ereignis/Maus folgendes eingetragen:

    Sub OnClick(ByVal Item)
    'Aufruf von einem Button aus

    Dim strFile
    strFile = SelectFile()
    If strFile <> "" Then
    '"FilePath" ist eine WinCC-Variable vom Typ Text
    HMIRuntime.Tags("FilePath").Write strFile
    End If
    End Sub

    Beim speichern kommt erstmal keine Fehlermeldung. Wenn ich die Runtime starte, kommt aber nun statt dem Bild ein gelbes Warndreieck mit Ausrufezeichen drin. Wenn ich die Zeile mit dem Aufruf der Funktion im Buttonereignis auskommentiere dann wird mir wieder das Bild korrekt angezeigt, aber es funktioniert nichts. Ich hätte da als Laie mit gefährlichem Halbwissen mal folgende Fragen:
    1. Warum passiert das so? Das Bild dürfte doch eigentlich erst dann abkacken (gelbes Warndreieck) wenn ich auf den Button klicke?
    2. Es hängt ja eindeutig mit der Funktion SelectFile() zusammen. Ist da ein Fehler drin.
    3. Wird die Funktion evtl. garnicht gefunden. In welchem Verzeichnis müsste die denn liegen. (Momentan im VBS-Editor unter Standardmodule)
    4. Wenn das alles wie gewünscht funktionieren würde, könnte ich die Variable FilePath auch dem Eingabefeld zuordnen um so auch weiterhin die manuelle Eingabe zu ermöglichen?
    5. Ist das womöglich alles Unsinn und funktioniert so garnicht? Hat jemand einen besseren Vorschlag zur Lösung.
    Ja, ja ich weiß, eine ganze Menge komplizierter Fragen. Ihr würdet mir allerdings sehr helfen wenn ich das hinbekommen würde. Daher vorab schon mal besten Dank für die Bemühungen.
    Grüße
    Uli
    Zitieren Zitieren WinCC Pfadname auswählen  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.735
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Was sagt denn derjenige dazu, von dem du die Funktion bekommen hast?
    Die Genialität einer Konstruktion liegt in ihrer Einfachheit – Kompliziert bauen kann jeder.

    (Sergei Pawlowitsch Koroljow, sowjetischer Konstrukteur von Raketen und Weltraumpionier)

  3. #3
    Registriert seit
    22.11.2012
    Beiträge
    111
    Danke
    15
    Erhielt 19 Danke für 18 Beiträge

    Standard

    Mit einer anderen Methode funktioniert das ganze. Hab ich selbst im Einsatz.
    Problem: Ich komm grad nicht an meine Projektsicherung ran.

  4. #4
    Registriert seit
    12.02.2015
    Beiträge
    6
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Wäre schön wenn du mir das mal zeigen könntest.

  5. #5
    Registriert seit
    22.11.2012
    Beiträge
    111
    Danke
    15
    Erhielt 19 Danke für 18 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi, hat etwas gedauert aber hier kommts:

    Ich verwende WinCC 7.2 und Windows 7.

    Wird bei Mausklick auf einen Button (VBS-Aktion) ausgeführt [...]

    Code:
    Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)    
    HMIRuntime.Trace("======= Pfadauswahl gestartet =======" &vbCrLf)
    Item.Operation = false
                                                                                                
    Dim oSheet, Dateiauswahl, AuswahlTitel, StartOrdner, Ordner, StoragePath, FName, File
    
    AuswahlTitel = "Bitte ein Verzeichnis zum Speichern auswählen" 
    StartOrdner = 0    ' 0=Desktop, 17=Computer 
    
    Set Dateiauswahl = CreateObject("Shell.Application").BrowseForFolder(0,AuswahlTitel,16,StartOrdner) 
    
    ' prüfen ob ein Ordner ausgewählt wurde
    If Dateiauswahl Is Nothing Then
        HMIRuntime.Trace("EXIT: Kein Ordner gewählt !" &vbCrLf &vbCrLf &vbCrLf) 
        Item.Operation = true
        Exit Sub ' ENDE !!!!
    End If 
    
    Set Ordner = Dateiauswahl.Self 
    
    ' Archivierungspfad (Eingangsparameter) und Dateiname zusammensetzen 
    StoragePath = Ordner.Path & "\"
    
    
    ' gewählten Pfad ausgeben
    HMIRuntime.Trace("gewählter Pfad: " &StoragePath &vbCrLf)
    
    ' in Variable speichern
    HMIRuntime.Tags("exportpfad").Write StoragePath
    
    Item.Operation = true
    HMIRuntime.Trace("======= Pfadauswahl fertig! =======" &vbCrLf &vbCrLf &vbCrLf) 
    End Sub
    Probleme gibt es, wenn die Runtime den Zugriff in die Windows Ebene sperrt, da taucht das Fenster (manchmal ?!) im Hintergrund auf und man sieht es nicht.

    Ansonsten einfach mal ausprobieren

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 11.05.2014, 08:14
  2. PC Auswählen
    Von el padre im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 23.04.2012, 20:30
  3. Rezept per Skript auswählen
    Von klusklus im Forum HMI
    Antworten: 2
    Letzter Beitrag: 04.03.2008, 08:05
  4. Antworten: 0
    Letzter Beitrag: 14.11.2007, 07:57
  5. Profibusschnittstelle auswählen
    Von x108 im Forum Feldbusse
    Antworten: 5
    Letzter Beitrag: 30.05.2005, 13:59

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •