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

Ergebnis 1 bis 2 von 2

Thema: WinCC Objekteigenschaften in C-Script ändern

  1. #1
    Registriert seit
    06.01.2012
    Beiträge
    9
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hey,

    ich will mit einem C-Script die Objekteigenschaft eines Buttons ändern.
    Wenn ich klicke soll sich die Eigenschaft "gedrückt" von dem Button von ja auf nein und umgekehrt ändern.

    Meine Vorgehensweise wäre:

    ...
    SetToggle(lpszPictureName, "Button8", (!GetToggel));
    ...

    Aber irgendwie funktioniert es nicht wie ich mir das vorstelle.
    Kann mir jmd helfen oder weiß jmd wo es eine Art "StepIn" oder "GettinStarted" für die Objektänderung in C-Script gibt?

    Vielen Dank!
    Zitieren Zitieren WinCC Objekteigenschaften in C-Script ändern  

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,
    Zugriff auf die Objekteigenschaften eines Bildobjektes bekommst du lesend mit den Funktionen
    GetPropBOOL, GetPropChar, GetPropDouble und GetPropWord

    und schreibenden Zugriff mit den Funktionen
    SetPropBOOL, SetPropChar, SetPropDouble und SetPropWord.

    Welche Objekteigenschaften verfügbar sind und wie diese heißen, kann man am einfachsten herausfinden indem man die entsprechende
    Funktion aus dem Funktionsbaum in das Codefenster herüberzieht bzw. doppelklickt. Dann erscheint der Wizard für den Funktionsaufruf,
    und wenn man auf die drei Punkte (...) neben dem Wert klickt, gelangt man in ein Auswahldialog in dem einem alle Objekteigenschaften
    aufgelistet werden.

    Etwas verwirrend ist dabei, dass du über Set/GetProp-Funktionen nur über die englischen Namen auf die Eigenschaften zugreifen kannst.
    Da ist etwas Kreativität bei der Übersetzung gefragt. Die Eigenschaft die du benötigst heißt auf deutsch "Gedrückt" und im englischen dann
    eben "Pressed" (hier ist das noch eindeutig).
    Welchen Datentyp diese Eigenschaft hat, kannst du herausfinden wenn du im Graphics Designer die Eigenschaften eines Objektes aufrufst.
    Kannst du eine Eigenschaft in Ja/Nein ändern dann brauchst du ..BOOL, bei einem Text ..Char, bei einem ganzzahligen Wert ..Word usw.

    Theoretisch könntest du also in deinem Mausklick Ereignis folgendes Skript ausführen:

    Code:
    void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
    {
      BOOL bValue;
    
      bValue = GetPropBOOL(lpszPictureName, lpszObjectName, "Pressed");
      SetPropBOOL(lpszPictureName,lpszObjectName, "Pressed", !bValue);
    }
    Das liest die Eigenschaft "Pressed" des Objekts in dem diese Funktion aufgerufen wird, und schreibt sie negiert wieder zurück..

    Aber eben nur theoretisch, funktioniert in der Realität wohl nicht wie gewünscht.
    Denn wenn das Mausklick Ereignis ausgelöst wird, ist die Taste ja schon gedrückt. Wenn man dann
    die Eigenschaft liest und negiert, dann bleibt die Taste nicht gedrückt.

    Wenn du eine einrastende Taste haben willst, kannst du auch in den Eigenschaften der Taste "Einrasten" auf Ja setzen.
    Die Darstellung geht aber wie auch die Änderung über ein Skript bei einem Bildwechsel wieder verloren.

    Wenn es dauerhaft sein soll, dann muss man eine interne (oder externe) Variable anlegen, und die "Gedrückt" Eigenschaft der Taste
    im Dynamik-Dialog mit dieser Variable verbinden (wichtig ist dann Aktualisierung bei Variablenänderung, sonst flackert die Taste beim Anklicken kurz).
    Wenn man diese Variable bei Anklicken der Taste toogelt, dann sollte die Taste dauerhaft rastend sein.

  3. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    twocaru (20.07.2015)

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 31.05.2013, 11:45
  2. Antworten: 0
    Letzter Beitrag: 05.08.2012, 21:14
  3. Antworten: 0
    Letzter Beitrag: 10.01.2009, 10:43
  4. Antworten: 7
    Letzter Beitrag: 28.10.2008, 06:39
  5. WinCC Objekteigenschaften dynamisieren
    Von Ragamuffin im Forum HMI
    Antworten: 3
    Letzter Beitrag: 03.07.2008, 20:11

Lesezeichen

Berechtigungen

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