Hallo ihr alle,
erstmal vielen Dank für eure zahlreichen Beitraege. Ich werde nochmal kurz beschreiben was mien statur quo ist und was ich genau vorhabe und dann auf eure beitraege eingehen.
Also momentan steuere ich meine Controls als XControls. Jedes Control hat also schon seine eigene Eventstructure und mein Hauptprogramm ist (endlich) ziemlich schlank und übersichtlich, was ich gerne so belassen würde. Nun moechte ich aber weg von den XControls, zum einen weil sie mir manchmal fehlerhaft vorkommen, zum anderen weil man die XControls wie ich finde nur recht schwierig ansprechen kann. Teile ich bspw. die Referenzen auf die XControls meiner Steuerungsklasse mit, so sind die XControls standardmaesig gesperrt wenn ich mein Projekt lade, da die Klasse ja darauf zugreift etc. Zumindest: Weg von XControls.
Stattdessen würde ich gerne für jedes Control (bzw. für jede Art von Control, Slider bspw kommen mehrfach vor) eine Klasse erstellen. Jede Controlklasse koennte dann von einer abstrakten Control-Basisklasse erben, die bspw die Funktionen init (initialiseren des Controls mit Werten aus xml-Datei), refresh (aktualisieren der Anzeige wenn sich die zugrundeliegenden Parameter geandert haben) etc. beinhaltet. Naja, hab das noch nicht bis aufs letzte durchdacht, weil ich eben beim groben testen einer solchen Klasse, auf das Problem gestoßen bin, welches ich hier gepostet habe.
Denn jede Control-Klasse würde dann ja auch ein SubMain-VI beinhalten, welches eine while loop beinhalten würde, die während der laufzeit meines programms dauernd läuft und dort die user-events in einer event-strucutre abfragt.
Also:
Das Control liegt auf dem Frontpanel des MainVI's meines Programms, die Behandlung der Events findet aber in dem jeweiligen SubMain-VI der Controlklasse statt.
' schrieb:Mal so in Blaue gesprochen: Pro Control ein SubPanel und in dem SubPanel das SubVI ausführen. Das Control liegt dann auf dem FP des SubVIs. Mit einem SubVI, also quasi einem (Cluster-)Control, geht das auf jeden Fall gut.
Mir sagt Subpanel leider nichts, koenntest du dazu noch zwei zeilen schreiben (leider sitz ich gerade auch nicht an meinem LabVIEW-Arbeitsplatz und kann danach suchen...)
' schrieb:Warum eigentlich nicht mit dynamischen Events? Könntest ja die Referenz des Controls dem SubVI übergeben und dort Regestrieren. Einfach ists auch?
Also damit habe ich etwas rumprobiert. Aber zum einen entsteht natürlich mehr Logik und ich konnte glaub nicht (falls mein Control ein Cluster ist) auf die Events der einzelnen Elemente meines Clusters zugreifen (bspw. statt "Cluster->Eingabefeld1 ValueChange" geht nur "Cluster->ValueChange"). Wenn du in dieser Richtung schon mal was gemacht hast schrotti, wäre es klasse wenn du es hochladen koenntest. Weil jede Controlklasse müsste sowieso über die Referenz des Controls verfügen, welches sie beschreibt, sodass dieses Datum da wäre.
' schrieb:Nun gut, dann hättest Du eben eine Evestruktur mit 100 Cases.
Das möchte ich auf keinen Fall mehr haben. Das war der Zustand bevor XControls kamen. Zum einen wegen der von IchSelbst angesprochenen Wiederverwertbarkeit, zum anderen weil es davor auch sehr unübersichtlich und zeitraubens war, bspw. wenn man einen speziellen Case gesucht hat.
' schrieb:Wahr ist aber vielleicht, daß Dein Projekt mit einer guten Idee deutlich einfacher sein könnte
Ja natürlich. Falls ihr gute Vorschläge habt bin ich euch sehr dankbar.
Viele Grüße,
Steffen