INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Events eines Controls in anderem VI bearbeiten



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

30.06.2009, 16:04 (Dieser Beitrag wurde zuletzt bearbeitet: 30.06.2009 16:06 von eg.)
Beitrag #11

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Events eines Controls in anderem VI bearbeiten
Ich glaube schon eher, dass SteffenSI anstatt pro Event einen Case zu machen, eine Event Struktur gemacht hat und deshalb Platzprobleme bekommt.

Hoffentlich ist es nicht soBig Grin

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30.06.2009, 18:11
Beitrag #12

SteffenSI Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Nov 2008

8.6
2007
en

69115
Deutschland
Events eines Controls in anderem VI bearbeiten
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.06.2009, 21:11
Beitrag #13

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Events eines Controls in anderem VI bearbeiten
Anbei ein Beispiel, wie du an die Referenzen von Elementen in Cluster und Tab kommst. Es gibt bereits auf ni.com oder Lava ein VI, dass alle Referenzen ausspuckt, aber ich kanns gerade nicht finden. Danach würde ich dieses Array einfach den SubVIs übergeben, die sich daraus die Referenzen für den Elementtyp rausziehen sollen, für das es jeweils gedacht ist.

Lv86_img
Sonstige .vi  Get_Control_Refs.vi (Größe: 14,74 KB / Downloads: 189)

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.06.2009, 21:49
Beitrag #14

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Events eines Controls in anderem VI bearbeiten
' schrieb: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...)
Ein SubPanel ist ein Fenster auf dem FP von VI-1, in dem das FP von VI-2 dargestellt wird. Die beiden VIs VI-1 und VI-2 laufen parallel und somit gleichzeitig. Das ist dann so, wie wenn du unter Windows eben zwei Fenster offen hast.

Hab ich aus deinem Positing richtig herausgehört, dass du OOP in LV machen willst, also LVOOP ?

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.07.2009, 20:57
Beitrag #15

SteffenSI Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Nov 2008

8.6
2007
en

69115
Deutschland
Events eines Controls in anderem VI bearbeiten
Oh man - nichts klappt. Irgendwie ist alles da, aber ich bekomms nicht so hin wie ich es moechte. Kann ich nicht irgendwie mit der Register Events Funktion einfach alle moeglichen Events eine Controls (und im Falle eines Clusters noch zusaetzlich seiner Komponenten) auf einmal registrieren?

Und noch eine Frage: Wenn ich mir AllControls ausgeben lasse und das Array in ein Cluster wandle, dann haben die Eintraege ja Namen wie Control[0], Control[1], etc. Andernseits kann ich ja ueber label.Text auf den Namen des entsprechenden Controls zugreifen. Kann ich nun das so arrangieren, dass die Namen der Controls als Clusternamen (statt Control[x]) angezeigt wird?

' schrieb:Hab ich aus deinem Positing richtig herausgehört, dass du OOP in LV machen willst, also LVOOP ?

Ja, also das Programm ist schon objektorientiert - nur die Verwendung der XControls anstatt ueblicher GUI Klassen war bisher noch inkonsistent. Das ist noch ein weiterer Grund warum ich gerne auf diese verzichten moechte.

Gruss Steffen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.07.2009, 21:01
Beitrag #16

SteffenSI Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Nov 2008

8.6
2007
en

69115
Deutschland
Events eines Controls in anderem VI bearbeiten
Ich braeuchte einfach nur eine Funktion, der ich eine Referenz eines Controls reingebe und die mir alle denkbaren Events dieses Controls als "event registration refnum" rausgibt sodass ich es nur noch an eine event structure anschliessen kann und dann schoen darauf zugreifen...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
01.07.2009, 21:26 (Dieser Beitrag wurde zuletzt bearbeitet: 01.07.2009 21:32 von eg.)
Beitrag #17

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Events eines Controls in anderem VI bearbeiten
Probiere es mal so:


Angehängte Datei(en) Thumbnail(s)
   

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.07.2009, 22:53 (Dieser Beitrag wurde zuletzt bearbeitet: 01.07.2009 22:54 von SteffenSI.)
Beitrag #18

SteffenSI Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 64
Registriert seit: Nov 2008

8.6
2007
en

69115
Deutschland
Events eines Controls in anderem VI bearbeiten
Ja - so muss man halt für jedes Control einzeln die events die man haben möchte registrieren. Zusätzlich find ich die Controlnamen ([0] <?>) noch unschoen so (deshlab meine Frage ob man den Clusterelementen die Controlnamen verpassen kann). Aber ja, ich denke die Lösung wird irgendwie darauf hinauslaufen.

@IchSelbst: Noch eine Frage zu den Subpanels. Kann man deren Rahmen irgendwie ausblenden? So das der Benutzer quasi gar nichts von dem Subpanel sieht?

Gruß Steffen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
01.07.2009, 23:23
Beitrag #19

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Events eines Controls in anderem VI bearbeiten
' schrieb:Kann man deren Rahmen irgendwie ausblenden?
Klar. Dann sieht man ihn aber auch in der IDE nicht mehr.

Guckst du Bild: Im Werkzeug Cursorauswahl Farbauswahl wählen (ganz unten). Den Farbstift auf das SubPanel setzen, rechts klicken und (oben rechts) Transparent wählen.


Angehängte Datei(en) Thumbnail(s)
   

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.07.2009, 20:18
Beitrag #20

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Events eines Controls in anderem VI bearbeiten
' schrieb:Ja - so muss man halt für jedes Control einzeln die events die man haben möchte registrieren. Zusätzlich find ich die Controlnamen ([0] <?>) noch unschoen so (deshlab meine Frage ob man den Clusterelementen die Controlnamen verpassen kann).

Anbei noch eine kleien Anleitung, wie es vllt etwas weniger klickarbeit ist. Aber es bleibt ne Menge zu machen.

Lv86_img
Sonstige .vi  Events_Anleitung_schrotti.vi (Größe: 8,82 KB / Downloads: 158)

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Frage zur Architektur: Statemachine und Wait for Events tuhpon 6 4.498 18.03.2024 16:14
Letzter Beitrag: tuhpon
  Muss man Referenzen von controls überhaupt schließen? dimitri84 4 4.237 21.04.2022 11:57
Letzter Beitrag: dimitri84
  Identische Label an FP Controls Kiesch 1 2.190 13.01.2022 07:37
Letzter Beitrag: GerdW
  Controls bzw. Indicators nach Label finden Kiesch 4 5.810 12.10.2020 08:42
Letzter Beitrag: Achim
  Runtime Menü auslösen aus anderem VI GT123 4 3.463 11.09.2020 16:12
Letzter Beitrag: GT123
  Bedienelemente bündeln zum Auslösen eines Events Marcusius 12 9.308 03.09.2019 17:24
Letzter Beitrag: Marcusius

Gehe zu: