Vorlageobjekte vor anderen Bildobjekten in Flex

rostiger Nagel

Forums-Knochenbrecher
Teammitglied
Beiträge
16.347
Reaktionspunkte
5.936
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe ein MP277, dort möchte eine art Pop Up Meldung machen.
Diese wird sichtbar mit einen Bit, wird die Quittiertaste betätigt wird
sie wieder unsichtbar. Das ganze Funktioniert auch ganz gut.
Aussehen soll es wie folgt:
Pop Up.JPG

Jetzt war mein gedanke das Pop Up einfach in das Vorlagenbild zu
legen, so das die Meldung auf allen Bildern zu sehen ist.
Aber das Funktioniert wieder nicht, das Pop Up verschwindet hinter
den proketierten objekten der anderen Bilder.

Hat da jemand einen Tip wie ich das PopUp ganz nach vorne holen
kann, also immer vor den objekten in den anderen Bildern liegt?

gruß helmut
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Popup auf eine höhere Ebene legen als die Objekte wo in den anderen Bilder projektiert wurden.

helf mir bitte ein wenig weiter, wie meinst du das...die ebenen
die ich für das objekt einstellen kann z.B. ebene 1 hat eine höhere
Prirorität wie ebene 0?

oder über Reihenfolge, eins nach vorne bzw. ganz nach vorne...
 
Zuletzt bearbeitet:
Hallo, wie netmaster schon sagt.

Eigenschaften -> Verschiedenes -> Ebene

Wenn du die drei Objekte gruppierst ganau so. Die Priorität ist aufsteigend.
 
hier kannst du es noch einmal sehen, den Pop Up habe ich nocheinmal
in die Vorlage kopiert (rot Makiert). Auf dem Panel sieht es später
genauso aus. Das Pop Up ist Gruppiert und alle Elemente des Pop Up
sind in Ebene 11, die anderen Bildobjekte sind in Ebene 0.
Komischerweise ist es so das Störmeldefenster in der Vorlage immer
nach oben kommen, ist doch irgentwie blöd...?!
Pop Up_1.JPG
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann normalerweise nicht sein.
Hast du auch die Ebene der Gruppe auf 11 ?!? Ich vermute mal nein!!!

das wäre es jetzt gewesen, die gruppe lag nicht auf ebene 11, also
gruppe auch noch mal auf ebene 11 gelegt, in die vorlage rein.
Leider mit dem selben ergebnis es geht nicht....
 
Vorlage-Ebenen sind immer hinter Bild-Ebenen

Hallo Helmut,

ALLE Ebenen der Vorlage liegen HINTER den Bildebenen.
Es ist NICHT möglich, ein "normales" Objekt der Vorlage VOR Objekten der
Bilder anzuzeigen. Ausnahmen: Objekte, die ein eigenes Fenster öffnen.

Das ist in WCCflex schon immer so und läßt sich nicht ändern.

Ich habe das auch mal in einem Siemens-Handbuch oder -FAQ gelesen, finde
es aber nicht wieder.

Aber hier eine Aussage vom Siemens-Support:
http://www.automation.siemens.com/WW/forum/guests/PostShow.aspx?language=de&PostID=59315
Hallo Christof,

hab mich deswegen auch schon an den Support gewandt, hab folgende Antworten drauf bekommen.
Erstens liegen alle Ebenen der Vorlage HINTER den Bildebenen. Beispiel: Eine transparente Schaltfläche, in der Vorlage in Ebene 31 projektiert, liegt hinter einem im Textfeld auf Ebene 0 projektierten Textfeld an derselben Stelle, die Schaltfläche ist also nicht bedienbar.

Zweitens gibt es bei den Objekten zwei Grundtypen, Typ 1 wird im selben Fenster dargestellt (z.B. ein Textfeld), Typ 2 benutzt ein eigenes WinCE-Fenster, dass dann immer über allen anderen Fenstern liegt (z.B. eine Kurvenanzeige oder eine Meldeanzeige). Es ist nicht möglich, ein Objekt vom Typ 1 über eins vom Typ 2 zu legen.

Auszug aus der Mail vom Support:


Technisch gesehen, gibt es Objekte mit Fenster und fensterlose Objekte.

Das für den Anwender gleiche Objekt kann abhängig vom Modus einmal mit Fenster und einmal ohne Fenster sein.

Mit Fenster heißt, das Objekt erzeugt ein eigenes Fenster in dem es sich darstellt.

Objekte ohne Fenster malen sich direkt in das RT Fenster.

Da das RT Fenster logischerweise immer hinten liegt, können fensterlose Objekte nicht über Objekten mit Fenster liegen, weil deren Fenster ja immer vor dem RT Fenster liegt..

Objekte haben ein Fenster, wenn sie einen Scrollbar brauchen, oder andere vorgefertigte Windows Controls, wie Listview ,ComboBox o.ä benutzen.

Folgende Objekte haben immer ein (eigenes) Fenster:

1. Status Force

2 .SmartClient View

3. User View

4. Trend View

5. Alarm View (nicht simple)

6. Recipe View (nicht simple)

Folgende Objekte haben von abhängig vom Modus ein Fenster 1. Symbolic IO Mode: Input + Input/Output 2. Graphics IO Mode: Input + Input/Output

(Diese Liste erhebt keinen Anspruch auf Vollständigkeit.)



Daran wird sich auch in absehbarer Zeit laut einem Telefonat mit dem Support nichts ändern, weil dazu die Runtime (auf dem HMI) geändert werden müsste, nicht nur die Projektierungssoftware.

mfg.
Thomas Kaiserauer

Gruß Harald
 
Danke Harald,
dann brauche ich ja nicht weiter suchen. Also lege ich meine Pop Up
in alle relavante Bilder. Es wäre ja so schön gewesen, aber die Flex
Entwickler wollen uns kein Pop Up geben und wenn es auch mit Board
Mitteln erstellt wurde, wie in meinen Fall

Danke an alle und einen schönen gruß
helmut
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Meldeklasse "Bedienerhinweise"

Hallo Helmut,

eine Möglichkeit für Bediener-Hinweismeldungen in echten WCCf-PopUps wäre,
eine extra Meldeklasse zu definieren und ein extra Meldefenster nur für diese
Meldeklasse in der Vorlage anzulegen.

Allerdings erscheinen diese Hinweis-Meldungen dann auch in der Melde-Anzeige
(History: gekommen, gegangen (quittiert)) und ggf. im Melde-Archiv.

Wenn Du damit leben kannst?

Gruß Harald
 
ja Harald,
darauf wird es hinauslaufen, eigene Meldeklasse mit eigene Farbe.
Werd es morgen mal in Angriff nehmen.
Ziel war es ja die Meldeanzeige mit den sehr sehr sehr kleinen Quittiertasten
zu umgehen. Meldung kommt als Pop Up nach oben und sollte sofort Quittiert werden.
Die kleinen Buttons in der Meldeanzeige sind ja leider nicht für echte
Männerhände geeignet. es sei den man hat finger wie ein Gynäkologe die aber nicht
unsere kunden sind.

das ist ein 8"-Panel, also wirklich nicht groß
Meldeanzeige Quit.JPG
 
Zuletzt bearbeitet:
So nach ein paar PN, Mails und Telefonaten, habe ich von xhasx, das
script für Po Up Meldungen bekommen und es ist genauso wie ich es
mir gewünscht habe :D....aber leider funktioniert es nur auf PC-Systemen
nicht auf den MP mit CE Betriebssystem :cry:

Da ich es aber trotzdem so gut finde habe ich mit xhasx verabredet das
wir es doch in den Thread reinstellen, so das auch andere etwas davon
haben. Vielleicht hat ja hier noch jemand eine Idee wie man es für die
Multipanels hinbekommt, oder es sogar jemand das SDK und schreibt
schnell ein Aktive X, das vlt. auf die Multipanels übertragen werden
kann, so das es funktioniert.

Hier erst mal das Script, an den Skript kann von außen folgende Paramter
angelegt werde: Überschrift, Meldetext, Dartstellungsart und eine
Rückmeldung als Variable.

Script
...
' Zeigt eine Meldung in einem Dialogfeld an, wartet darauf, dass der Benutzer auf eine Schaltfläche klickt,
' und gibt einen Wert zurück, der anzeigt, auf welche Schaltfläche geklickt wurde.
'
'
'Syntax
' intButton = MyShellObject.Popup(strText,[nSecondsToWait],[strTitle],[nType])
'
'Arguments
' strText : String, für den Text in der Pop-UP Box
'
'
' nSecondsToWait : Zeit in Sekunden wie lange die Box angezeigt wird ohne
' das der Anwender auf einen Button klickt
' (Optionale Angabe, default = unbegrenzt)
'
' strTitle : String, für die überschrifte der Pop Up Box (Optional)
'
' nType : Welche Buttons und Info-Icons angezeigt werden (Optional, Zahl)
'
' IntButton : Rückgabewert der MsgBox welcher Button gedrückt wurde (Integer Wert)
'
'Hier sind die Tabellen für die meisten einstellungen
'
'Button Typ
'
' Wert Beschreibung
' 0 Nur OK
' 1 OK und Abbrechen
' 2 Abbruch, Wiederholen und Ignorieren
' 3 Ja, Nein und Abbrechen
' 4 Ja und Nein
' 5 Wiederholen und Abbrechen
'
'Icon Typ
'
' Wert Beschreibung
' 16 Stop (Meldung für kritische Fehler)
' 32 Warnung mit Abfrage
' 48 Warnung
' 64 Informationsmeldung
'
'Rückgabe der betätigten Button's
'
' Wert Beschreibung
' -1 kein Button wurde betätigt, Eingabezeit abgelaufen
' 1 OK
' 2 Abbrechen
' 3 Abruch
' 4 Wiederholen
' 5 Ignorieren
' 6 Ja
' 7 Nein
'
'
'
' 4096 = nicht schliessbar...
Dim Obj
' Pop up
Set Obj = CreateObject("WScript.Shell")
PopUp = Obj.Popup (Meldetext,-1 , Titel, ButtonType + IconType + 4096)
Set Obj=Nothing
...


Parameter
...
Titel
Meldetext
Button Type
Icon Type
...

Aussehen wird es in etwa so.
Pop Up_2.JPG


PS. wenn es jemand gut findet, bitte den Danke Button bei xhase ein Beitrag vorher betätigen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gemeinschaft,

ich bin auch auf der Suche zur Realisierung einer MsgBox.

Jedoch stürtz mein WinCC flexible 2007 HF4 ab, wenn ich den Code aus Post #17 in ein Script einfüge.

Ein Fenster mit folgendem Fehlertext geht auf.

Code:
Dies ist ein automatisch generierter Fehlerbericht für das WinCC flexible Engineering-System.

Microsoft Windows XP Professional Service Pack 3        5.1.2600.196608

Produktversion: WinCC flexible 2007 Advanced; K 1.02 Hotfix 4; K 1.2.0 HF 4 (1.05.03)


System.Security.SecurityException
Der angeforderte Registrierungszugriff ist unzulässig.

Exception Source 
mscorlib

Exception Target Site
Void ThrowSecurityException(System.ExceptionResource)

Exception Stack Trace
   bei System.ThrowHelper.ThrowSecurityException(ExceptionResource resource)
   bei Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable)
   bei Microsoft.Win32.RegistryKey.OpenSubKey(String name)
   bei Siemens.Simatic.Hmi.Utah.Scripting.EditControl.ScriptEditOMReflection.FillTlbsHashtableFormRegistryKeyCLSID()
   bei Siemens.Simatic.Hmi.Utah.Scripting.EditControl.ScriptEditOMReflection.FillTypeLibsHashTable()
   bei Siemens.Simatic.Hmi.Utah.Scripting.EditControl.ScriptEditOMReflection.GetTypeLibGuidFromProgId(String progID)
   bei Siemens.Simatic.Hmi.Utah.Scripting.EditControl.ScriptEditOMReflection.Init_ProgId(String progId)
   bei Siemens.Simatic.Hmi.Utah.Scripting.EditControl.ScriptEditOMReflection.Init(Object progIdOrInterface, Boolean setHelpDescription)
   bei Siemens.Simatic.Hmi.Utah.Scripting.EditControl.LoadTlbAndConvertToAssemblyThread.LoadTlbAndConverToAssembly()
   bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   bei System.Threading.ThreadHelper.ThreadStart()
End Exception
Könnt Ihr damit was anfangen bzw. hat jemand ne Idee was ich eventuell vergessen hab einzustellen?
 
Den Thema ist etwas alt, aber trotzdem will ich eine Warnung herauswerfen.

Wenn man ein MsgBox mittels wscript.shell erzeugt, funktioniert den Message Box, aber alle andere Skripte werden gesperrt so lange das den Message Box noch nicht weg-quittiert ist.
Wenn den Skript-Puffer nicht überschreitet wird, weden die gesperrte Skripte nach den schliessen von den Message Box ausgeführt - also mit eine Verspäterung. Wenn es Variablen gibt in die Skripte (wenn nicht ?), werden die Variabel-Werte erst iengelsen bei den spätere ausführen von die Skripte.
Im Fall das den Skript-Puffer überschreitet wird, gehen die gesperrte Skripte einfach verloren.

Also, wenn man ein MSgBox mit wscript.shell erzeugt, darf man in Prinzip keine weitere Skripte haben.
 
Zurück
Oben