Win cc Flex Füllfarbe eines Objektes ändern???

Dementis

Level-1
Beiträge
37
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag zusammen,

Ich hab folgendes Problem. Ich würde gerne ein Objekt in Win cc Flex Abhängig von einer Variable die Füllfarbe ändern.
Genauer gesagt geht es um eine RGB Auswahl.
Ich habe 3 Schieber mit dennen ich die Werte der einzelnen Kanäle ändern will (0-255 pro kanal) und je nach mix soll die dazugehörige Farbe bei einen Objekt angezeigt werden und genau da ist mein Problem!
Hab leider über suchfunktion nichts brauchbares gefunden :(

mfg
 
Wenn dein Panel Scriptfähig ist sollte das gehen.
Code:
Dim Opjekt
Set Opjekt = HmiRuntime.Screens("Bild_1").ScreenItems("Rechteck_1")
Opjekt.BackColor =  RGB(255,0,0)

oder auch so, dann kannst du Rot, Grün und Blau mit externen Variabeln fütten

Code:
Dim Opjekt
Dim Rot, Gruen, Blau
Rot = 255
Gruen = 0
Blau = 0 
Set Opjekt = HmiRuntime.Screens("Bild_1").ScreenItems("Rechteck_1")
Opjekt.BackColor =  RGB(Rot,Gruen,Blau)


hier noch ein Auszug aus der Online hilfe
Beschreibung
Legt die Hintergrundfarbe des angegebenen Objekts fest.
Zugriff in Runtime: Lesen und Schreiben
Syntax
Object.BackColor [= Color]
Object
Erforderlich. Ein Objekt vom Typ "ScreenItem" mit den Ausprägungen "Line", "Polyline", "Ellipse", "Circle", "Rectangle", "Polygon", "TextField", "IOField", "SymbolicIOField", "Button", "Switch", "GraphicIOField", "GraphicView", "Bar", "RecipeView", "StatusForce", "Gauge", "Slider", "SymbolLibrary", "TrendView", "MessageView" oder "UserView" oder ein Objekt vom Typ "Screen".
Color
Optional. Ein Wert oder eine Konstante, welche die Hintergrundfarbe festlegt.
Bemerkungen
Sie können die Funktion "RGB" verwenden, um die Farbe im RGB-Format (Rot, Grün, Blau) festzulegen. Dazu geben Sie für jeden der drei RGB-Werte den entsprechenden Dezimalwert an (Wertebereich von 0 bis 255). Die Farbe "Rot" wird beispielsweise so dargestellt: RGB(255, 0, 0). Des Weiteren können Sie auch die VBS-Farbkonstanten wie vbRed oder vbGreen verwenden.
Bei Linienobjekten ist die Hintergrundfarbe nicht sichtbar, wenn die Eigenschaft "BorderStyle" den Wert "0" hat.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Füllfarbe dynamisieren macht man in WinCCflex normalerweise über Animation > Gestaltung, allerdings muß man da eine vordefinierte Farbliste anlegen und eine Variable als Index angeben. Wenn Du Dich auf 64 Farben (3x 16 Stufen R/G/B) beschränken könntest, dann bleibt die vordefinierte Farb-Liste noch machbar.

Direkt dynamische RGB-Werte vorgeben geht in WinCCflex nur über Objekt-Attribute in einem Script.
Wie können Objekte in WinCC flexible über Scripte dynamisiert werden?
Code:
Set Objekt = HmiRuntime.Screens("Bild_1").ScreenItems("Rechteck_1")
Objekt.BackColor = RGB (R_value, G_value, B_value)
Allerdings habe ich festgestellt, daß es schwierig ist, sicherzustellen, daß die Objekte immer mit den richtigen Attributen angezeigt werden. Das Script müßte bei vielen Ereignissen aufgerufen werden: Wertänderung jeder beteiligten Variable + Bild aufgebaut + (weiß ich nicht mehr). Bei internen Variablen kann es passieren, daß das Wertänderung-Ereignis wegen dem Loop-Braker nicht aufgerufen wird.

Auf was für einem Panel/Bildschirm willst Du denn Deine exorbitant vielen Farben anzeigen? Kann man da überhaupt so viele Farbvarianten erkennen? Wozu braucht man so viele Farbvarianten?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So ich brauch nochmal ne kleine Hilfe!

Die Kommunikation mit SPS bzw der RGB variablen Funktioniert ohne Probleme jetzt, nur würde ich gerne in Win cc Flex über ein "symbolische EA-Feld" (wenn möglich) eine dynamische Dropdown liste machen, wobei nicht zwingend ein Text drin stehen soll, sondern bestimmte Farben zur auswahl stehen sollten.

Notfalls könnte man das auch mit einer rezeptverwaltung realisieren schätz ich mal aber mit einer Dropdown liste würde es mir besser gefallen :D
 
wenn du das über eine Drop Down Liste machen möchtest, geht das über eine
Textliste. Diese kannst du dan über eine Ein bzw. Ausgabefeld verarbeiten.
 
Das ist mir schon klar.

aber ich will das ja Dynamisch machen, d.h. das immer wieder ein Eintrag dazu kommen kann.
Najo ich könnte das limitieren aber dann stellt sich die Frage wie ich die einzelnen Eintrage mit der Farbe gestalten kann bzw eine Farbe zuweisen kann.
 
Man kann den Text eines Listeneintrages dynamisch ändern.
Man kann die Anzahl der Listeneinträge NICHT ändern.
Einzelne Listeneinträge verschiedenfarbig einfärben kann man auch nicht.

Harald
 
Das ist mir schon klar.

aber ich will das ja Dynamisch machen, d.h. das immer wieder ein Eintrag dazu kommen kann.
Najo ich könnte das limitieren aber dann stellt sich die Frage wie ich die einzelnen Eintrage mit der Farbe gestalten kann bzw eine Farbe zuweisen kann.

Hast du ein Panel, oder eine PC Runtime? Vieleicht liese sich auf der PC Rutime sowas mit einem Zusatzcontrol loesen!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schade, das es nicht so geht wie mir das vorstelle. :(

@jochen hab Runtime

Najo hab mir jetzt ne alternative überlegt.
Ich werd das einfach mit Buttons realisieren da werd ich das einfach begrenzen.

Was ich gern noch machen würde, ist das man wie bei div. grafik programmen oder auch bei Excel die Farbpalette einblenden kann bzw eine gewünschte Farbe auswählen kann und diese dann verarbeitet. :)
 
Also Ich habs grad versucht.

Die Win Forms Listbox als Zusatzcontrol, lässt sich zwar plazieren, aber danach stürzt bei mir Runtime ab.
Hab aber noch "S7FlatComboBox" gefunden. Da funktionierts per Script über AddItem Einträge hinzuzufügen!
 
danke jochen für die info.

Najo hab ich entschieden das ohne Dropdown menü zu machen..

Das größte Problem was ich eher momentan habe das ich die Farbeinstellung nicht per Schieber realisieren will sondern anhand einer Farbpalette.

Also das ich so ein Fester bekomm wie bei Excel oder anderen (Grafik) Programmen und ich dann per klick auf die gewünschte Farbe der RGB code ausgelesen wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also Ich habs grad versucht.

Die Win Forms Listbox als Zusatzcontrol, lässt sich zwar plazieren, aber danach stürzt bei mir Runtime ab.
Hab aber noch "S7FlatComboBox" gefunden. Da funktionierts per Script über AddItem Einträge hinzuzufügen!

Sag mal Jochen, das sind doch WinCC Addon, laufen die auch in flexibel?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also Ich habs grad versucht.

Die Win Forms Listbox als Zusatzcontrol, lässt sich zwar plazieren, aber danach stürzt bei mir Runtime ab.
Hab aber noch "S7FlatComboBox" gefunden. Da funktionierts per Script über AddItem Einträge hinzuzufügen!
Sag mal Jochen, das sind doch WinCC Addon, laufen die auch in flexibel?
Siemens wird schon wissen, warum ein Siemens-Control nicht ausdrücklich für die Verwendung in WinCC flexible freigegeben ist ...

Das größte Problem was ich eher momentan habe das ich die Farbeinstellung nicht per Schieber realisieren will sondern anhand einer Farbpalette.

Also das ich so ein Fester bekomm wie bei Excel oder anderen (Grafik) Programmen und ich dann per klick auf die gewünschte Farbe der RGB code ausgelesen wird.
Dazu müßtest Du für Deine Aufgabe erst einmal reichlich 16 Millionen Farbpixel in einem Palettenbild unterkriegen. :confused:
Als nächstes müßtest Du an die Mausposition 'rankommen.
WinCC flexible ES: Tipps und Tricks für das Erstellen von Skripten
5. Wie kann die aktuelle Mausposition ermittelt werden?

Um die aktuelle Mausposition auszulesen, muss auf das API (Application Programming Interface) des Betriebssystems zugegriffen werden.
Der Zugriff auf das API des Betriebssystems über DLLs wird in VB-Skripts nicht unterstützt. Alternativ kann die aktuelle Mausposition über ein selbst programmiertes ActiveX Control, das auf das API des Betriebssystems zugreift, ausgelesen werden.

Hinweis:
ActiveX Controls, die in WinCC flexible verwendet werden, müssen mit dem "Open Platform Program" (OPP) erstellt sein. Weitere Informationen entnehmen Sie aus folgender Beitrags-ID: 15247601.

Alternativ könntest Du reichlich 16 Millionen 1 Pixel große unsichtbare Schaltflächen projektieren. :ROFLMAO:
Dein Problem ist wohl (wenn überhaupt) nur mit 3 Schiebereglern R/G/B oder 3 Eingabefeldern für jeden Farbanteil lösbar.
Wobei Schieberegler mit 256 Stellungen auch schon stark grenzwertig sind.
Wenn Du Dich auf 64 Farben beschränken könntest, dann wäre Deine Farb-Auswahl ja noch machbar. Aber 256*256*256 = 16.777.216 Farben? :rolleyes:

Ich frage nochmal: Wofür braucht man so viele Farben?

Bist Du sicher, daß man die Farbnuancen auf Deinem PC-Monitor überhaupt unterscheiden kann?
Wozu brauchst Du bunter als Bunt? Willst Du mit WinCC flexible ein Fotobearbeitungprogramm programmieren?
Mußt Du für Deine Aufgabe unbedingt WinCC flexible verwenden?
Vielleicht solltest Du Dein Konzept nochmal überdenken.

Harald
 
Sorry hat etwas gedauert!

Also da es mit der Farbpalette nicht so Funktioniert wie ich mir das am Anfang vorgestellt hätte, hab ich das anders gelöst.

Ich hab mir zusätzlich zu den RGB Slider noch einen 4ten gebastelt mit den geht ich dann die Farbpalette in groben komplet durch (nicht alle 14mill!! :D).
Aber feineinstellungen kann man dann mit den RGB Slider machen.

Jetzt arbeite ich daran die eingestellten Farben (RGB Werte) in die Dafür vorgesehen Szenarienbutton bzw Datenbasteinbereich zu schreiben.
Momentan mach ich das über die Wincc Varliste, was aber bissal müsam ist.
Evtl find ich noch leichteren Weg. :-D

mfg Markus
 
Zurück
Oben