LabVIEWForum.de
Tab Control - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Tab Control (/Thread-Tab-Control--19166)

Seiten: 1 2 3


Tab Control - Robert85 - 05.06.2011 12:23

Hallo,

kurze Frage: Ist es möglich einen ganzen "Klotz" an LV-Programm (While-Schleife, Event-Struktur ...) nur dann ausführen zu lassen, wenn ich einen bestimmten Tab der Registerkarte anklicke? Wechsel ich wieder zu einer anderen Tab, sollte mein ganz normales Programm wieder weiterlaufen mit einer anderen Eventstruktur.

Ich hab mal was zusammengeklickt (VI anbei), wie ich es mir vorstellen könnte. Aber ich glaube das birgt große Fehlerquellen in sich ... irgendwie stößt sich das ... Mit 2 Event-Strukturen zu arbeiten ist sicher unschön. Kann ich das eleganter lösen?


RE: Tab Control - GerdW - 05.06.2011 14:50

Hallo Mike,

schließ doch das Tab-Control an eine Case-Struktur an...
Oder nutze es für Abbruchbedingungen deiner Schleifen (a la "Wenn Tab=Seite1 Dann weitermachen").
Und ja, 2 oder mehr Eventstrukturen pro VI können häßlich werden.


RE: Tab Control - Robert85 - 05.06.2011 15:58

Hallo GerdW,

genau das hab ich doch schon in meinem VI gemacht? Blush (siehe Bild).
Problem wäre ja das wenn ich den entsprechenden Tab anhabe, eine ganze Eventsteuerung ablaufen soll.


RE: Tab Control - jg - 05.06.2011 16:51

Du verwendest aber eine Eventstruktur innerhalb einer anderen Eventstruktur. Davon kann ich nur dringendst abraten. Du handelst dir mit so einem Aufbau sehr viel mehr Ärger ein als du glaubst. Sogar NI selber rät dringend von der Verwendung mehrerer Event-Strukturen innerhalb einer While-Schleife ab.

Es gibt immer eine Lösung, um nur mit 1 Event-Struktur auszukommen.

Ein schöner Ansatz für deinen Feature-Wunsch wäre ein Subpanel: Bei Wechsel auf eine bestimmte Tab-Seite wird das VI im Subpanel ausgeführt, wenn du wieder rausgehst, schießt du das Subpanel-VI ab.

Gruß, Jens


RE: Tab Control - TSC - 05.06.2011 17:07

1. Konflikte mit mehreren Ereignisstrukturen kann man verhindern, indem man auf keinen Fall das gleiche Ereignis mehrmals abfängt.

2. Ich weiß nicht genau, was du vorhast, aber evtl hilft dir mein kleines Beispiel weiter?!

Grüße,
Totti


RE: Tab Control - Lucki - 05.06.2011 18:41

(05.06.2011 12:23 )Mike77 schrieb:  Ist es möglich einen ganzen "Klotz" an LV-Programm (While-Schleife, Event-Struktur ...) nur dann ausführen zu lassen, wenn ich einen bestimmten Tab der Registerkarte anklicke?
Das ist doch auf natürliche Art und Weise sowieso der Fall, also ohne daß dazu etwas programmiert werden muß.
Es können doch immer nur die Bedienelemente auf der jeweils aktiven Registerkarten-Seite betätigt werden. Die Bedienelemente auf den unsichbaren Seiten sind dem Bediener nicht zugänglich. Es können demnach auch nicht die entsprechenden Ereignisse ausgelöst werden.
Wenn ich Dich richtig verstehe, willst Du etwas verhindern, was sowieso nie stattfinden kann. Oder kannst Du an einem anderen Beispiel zeigen, daß Deine Frage einen sinnvollen Hintergrund hat?
Also so einfach funktioniert dein Programm genau im gewünschtem Sinne:

[attachment=34095]


RE: Tab Control - Robert85 - 05.06.2011 19:26

Schon mal danke für die Hilfen.
Ich hab bisher mal eine Variante (die mit den Subpanels) probieren können. Das scheint aufs erste gut zu klappen. Kann ich da später ein Geschwindigkeitsproblem befürchten wenn das
VI das geladen wird sehr groß ist?

Meine Lösung mit dem Sub-Panel, hab ich mal angehangen.


RE: Tab Control - jg - 05.06.2011 21:15

Geschwindigkeitsprobleme später, nein.

Denn später heißt für mich innerhalb einer Exe, und da ist das Subpanel-VI mit Laden der Exe sowieso schon im Speicher.

Gruß, Jens


RE: Tab Control - Robert85 - 06.06.2011 10:41

@Lucki:

Zitat:Das ist doch auf natürliche Art und Weise sowieso der Fall, also ohne daß dazu etwas programmiert werden muß.
Es können doch immer nur die Bedienelemente auf der jeweils aktiven Registerkarten-Seite betätigt werden. Die Bedienelemente auf den unsichbaren Seiten sind dem Bediener nicht zugänglich. Es können demnach auch nicht die entsprechenden Ereignisse ausgelöst werden.
Wenn ich Dich richtig verstehe, willst Du etwas verhindern, was sowieso nie stattfinden kann. Oder kannst Du an einem anderen Beispiel zeigen, daß Deine Frage einen sinnvollen Hintergrund hat?
Also so einfach funktioniert dein Programm genau im gewünschtem Sinne:

Meine Frage entstand eigentlich aus folgendem Problem heraus: Ich habe ein Haupt-VI. Das besteht ganz grob gesagt aus einer While-Schleife in der eine Eventstruktur sitzt. Ich habe dann aber ein neues VI entworfen, weil es für die Entwicklung angenehmer war mit einem leeren VI zu beginnen. Nun steh ich natürlich vor der Aufgabe das neue VI in das Haupt-VI reinzubekommen. Letztlich können ja meine Events vom neuen VI zu den Events vom Haupt-VI, aber so einfach Copy & Paste wird das sicher nichts. Da entstehen zu viele Fehler. Die ganzen Bedienelemente muss ich auch kopieren. Daher kam mir halt in den Sinn, dass ich mein neues Vi einfach nur dann den Code abarbeiten lassen möchte, wenn man auf die entsprechenden Reiter klickt. Deswegen könnte ich mit dem Sub-Panel alles umgehen ... Blush
Oder bin ich gut beraten das doch alles in das schon vorhandene Event zu kopieren?


RE: Tab Control - macmarvin - 06.06.2011 11:41

Anbei eine Idee/Vorschlag wie du dein VI weitest gehend behalten kannst indem du ein statisches SubPanel im Tab nutzt.
Das lässt sich auch einfacher builden als dein Ansatz mit VI per Pfad in Subpanel.
[attachment=34098]lv2010
[attachment=34099]lv8.6
[attachment=34101]lv2009