18.01.2011, 15:00
(Dieser Beitrag wurde zuletzt bearbeitet: 18.01.2011 15:15 von Kiesch.)
Beitrag #1
|
Kiesch
LVF-Stammgast
Beiträge: 411
Registriert seit: Mar 2009
2019, 2018, 2016
2009
DE
04519
Deutschland
|
Frontpanel Objekte zur Laufzeit Verändern
Hallo liebe LVF User,
Ich schreibe gerade für ein größeres Projekt eine Art primitives Zeichenprogramm (dient Maßfestlegungen und Positionsfestlegungen für Messpunkte). Dabei treibt mich die Frage um ob man auch Gestaltungselemente per Blockdiagram Kommando selektiv ausblenden / einblenden kann (nehme mal an schon die Ebenenfestlegung des Elements würde ausreichen).
Warum brauche ich das? Nun einfach gesagt habe ich natürlich verschiedene Formen die ich in mein Zeichenprogramm einfügen können will, vom Rechteck über Linien, Punkte, Kreise etc.
Außerdem sollen alle diese Elemente bearbeitbar sein - über Controls auf dem Frontpanel. Dazu braucht man also sowas wie einen Mittelpunkt / Eckpunkt / Punkt der angibt wo das Objekt ist. 2 Seitenlängen und einen Drehwinkel für Rechtecke. etc. pp.
Sprich je nachdem was man gerade für eine Form bearbeitet, ändern sich die Parameter die man ändern kann. Entsprechend will ich natürlich auch das Frontpanel anpassen. Dabei wollte ich bewusst keine Registerkarten benutzen, da ich hierdurch meiner Meinung nach unnötige Redundanz hereinbringe (auf jeder Registerkarte muss ich natürlich neue Controls anbringen, was zur Folge hat, dass sinngemäß ähnliche Objekte wie zum Beispiel der Mittelpunkt / Eckpunkt / Punkt insgesamt aktuell 7 mal neu definiert würden (macht allein dafür 14 Controls).
Deswegen habe ich mich dazu entschieden die Controls auf meinem Panel an einer Stelle anzubringen und dann selektiv je nach Form die Beschriftung passen zu ändern wo nötig (ein Radius und ne Seitenlänge sind sinngemäß zwar das gleiche, sollten jedoch natürlich jeweils entsprechend bezeichnet werden) - das sollte ja über Eigenschaftsknoten noch kein Problem sein.
Außerdem werden gerade nicht benötigte Controls ausgeblendet. Auch da sehe ich kein Problem.
ABER: Durch Gestaltungselemente soll ja in irgendeiner Form eine sinnvolle Ordnung von Controlls geschehen. Nun wäre es allerdings schön gerade NICHT benötigte Gestaltungselemente (weil gerade kein Winkel angegeben werden muss zum Beispiel) auch auszublenden. Ist das irgendwie realisierbar?
Gruß Kiesch
P.S: Danke schonmal im vorraus.
*edit* Muss mich korrigieren - auch Beschriftungen der Anzeigen zu ändern ist während der Laufzeit nicht bzw. nur im Bearbeitungsmodus möglich. Entsprechend müsste ich also auf dem Frontpanel auch separate Textkommentare einfügen bzw. ändern.
Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
|
|
|
18.01.2011, 15:28
Beitrag #2
|
Richard
LVF-Gelegenheitsschreiber
Beiträge: 70
Registriert seit: Jun 2009
8.6,9.0,9.1,10.0,11.0
2008
DE_EN
80797
Deutschland
|
Frontpanel Objekte zur Laufzeit Verändern
Hallo Kiesch,
du kannst über Eigenschaftsknoten die Caption ändern. Diese lässt sich im gegensatz zum Label zur Laufzeit ändern.
Ebenfalls kannst du mit Eigenschaftsknoten die Sichbarkeit zur Laufzeit ändern.
Wenn du ein FP-Element in jeder Registerkarte haben möchtest, kannst du dieses einfach neben der Registerkarte einfügen und dann mit den Pfeiltasten darüberschieben. Es erscheint dann ein schwarzer Schatten unter dem Element, dieser wird zur Laufzeit aber nicht angezeigt.
Eigenschaftsknoten findest du über Rechtsklick -> Eigenschaftknoten erstellen.
Gruß Richard
|
|
|
18.01.2011, 15:35
(Dieser Beitrag wurde zuletzt bearbeitet: 18.01.2011 15:39 von Kiesch.)
Beitrag #3
|
Kiesch
LVF-Stammgast
Beiträge: 411
Registriert seit: Mar 2009
2019, 2018, 2016
2009
DE
04519
Deutschland
|
Frontpanel Objekte zur Laufzeit Verändern
Ah alles klar, sehe schon. Im Deutschen dann wohl der Untertitel. Danke schonmal dafür :-) Hatte auch schon mit Eigenschaftsknoten und der Beschriftung versucht, da meinte er das das nur im Bearbeitungsmodus geht - außerdem fiel mir dabei auf, dass ich dann mindestens mit Clustern die nach Name gebündelt sind Probleme kriegen würde ;-)
Muss ich dann also den Untertitel statt Beschriftung einblenden und ändern - gut ^^
Wenn jetzt noch jemand weis wie ich Gestaltungselemente selektiv Ein- / Ausblenden kann wär ich glücklich. Hab btw. auch schon gefunden, dass ich die wohl als GObjekt referenzieren kann. Aber wie ich danach mit dem Modifizieren weiterkomme verschließt sich mir atm.
*edit* Macht es eigentlich einen Unterschied (in der Verarbeitungsgeschwindigkeit o.ä.) ob ich einen allgemeinen Eigenschaftsknoten erstelle und über die Referenz steuere welches Objekt gemeint ist, oder über Eigenschaftsknoten erstellen einen Eigenschaftsknoten für ein bestimmtes Element erstelle, so dass keine Referenz mehr nötig ist? Könnte mir vorstellen, dass letzteres schneller ist, da nicht erst die Referenz ausgewertet werden muss - aber da lasse ich mich natürlich auch gerne eines besseren belehren (vor allem da ich bisher mit der ertsgenannten Methode arbeite).
Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
|
|
|
18.01.2011, 15:38
(Dieser Beitrag wurde zuletzt bearbeitet: 18.01.2011 15:41 von jg.)
Beitrag #4
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Frontpanel Objekte zur Laufzeit Verändern
Es gibt eine PropertyNode "Decorations[]" des "Pane", die enthält eine Array of Refnum zu allen Deko-Objekten des Fensters.
Gruß, Jens
EDIT: Per Right-Click-Framework kannst du dir auch eine Refnum eines bestimmten Deko-Objekts erzeugen:
http://decibel.ni.com/content/docs/DOC-6496
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
18.01.2011, 15:40
Beitrag #5
|
Richard
LVF-Gelegenheitsschreiber
Beiträge: 70
Registriert seit: Jun 2009
8.6,9.0,9.1,10.0,11.0
2008
DE_EN
80797
Deutschland
|
Frontpanel Objekte zur Laufzeit Verändern
Referenzen auf Gestaltungselemente bekomst du über die Eigenschaft-Dekorationen) des Panels.
Dann hast du alle Dekorationen als Array. Da musst du dann die Richtigen heraussuchen.
Eine andere Möglichkeit diese zu bekommen ist mir nicht bekannt.
Was möchtest du denn daran ändern.
Gruß Richard
PS.: Jens war schneller
|
|
|
18.01.2011, 15:43
(Dieser Beitrag wurde zuletzt bearbeitet: 18.01.2011 15:45 von Kiesch.)
Beitrag #6
|
Kiesch
LVF-Stammgast
Beiträge: 411
Registriert seit: Mar 2009
2019, 2018, 2016
2009
DE
04519
Deutschland
|
Frontpanel Objekte zur Laufzeit Verändern
Ah danke :-)
Da lag also die Lösung. Sieht vielversprechend aus, werde das dann mal austesten. Muss zwar noch rausfinden was welches Gestaltungselement ist, aber das sollte fix gehen.
Ich meld mich nochmal wenn ichs damit hingekriegt habe.
Gruß Kiesch
p.S: Ich komm mir grade blöd und blind vor, weil ich das offenbar übersehen habe obwohl ich schon auf der richtigen Spur war
Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
|
|
|
18.01.2011, 15:46
Beitrag #7
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
Frontpanel Objekte zur Laufzeit Verändern
' schrieb:Da lag also die Lösung. Sieht vielversprechend aus, werde das dann mal austesten. Muss zwar noch rausfinden was welches Gestaltungselement ist, aber das sollte fix gehen.
Der Ärger startet, wenn du ein weiteres Deko-Objekt im FP hinzufügst. Das erhält dann nämlich den Index 0 im Array der Referenzen...
Übrigens, wenn du etwas gezeichnet dargestellt haben willst, wieso stellst du das nicht in einem LV-Picture-Control dar? Oder machst du das...
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Einführende Links zu LabVIEW, s. GerdWs Signatur.
|
|
|
18.01.2011, 16:17
Beitrag #8
|
Kiesch
LVF-Stammgast
Beiträge: 411
Registriert seit: Mar 2009
2019, 2018, 2016
2009
DE
04519
Deutschland
|
Frontpanel Objekte zur Laufzeit Verändern
Hab ich schon gemerkt dass der immer mit 0 das bezeichnet was ich als letztes platziere muss ich mir also die Positionen raussuchen in nen Array schreiben und ne Shiftkonstante einfügen so dass ich einfach die Positionsnummern aktualisieren kann wenn ich Elemente hinzufüge. Betrifft ja nun glücklicherweise auch nicht hunderte Elemente.
Aus kurzem Googeln zu Picture Control bin ich nicht wirklich schlau geworden. Was genau kann man denn damit machen? Soweit ich das aus dem Link den ich gefunden habe verstanden habe ist das eine sehr anpassbare Controll - aber was ich wirklich damit machen kann hab ich noch nicht verstanden.
Aktuell verwende ich simple Standardcontrolls die ich programmatisch ein und Ausblenden will, je nachdem ob sie gerade benötigt werden oder nicht. Dazu Gestaltungselemente die das ganze in eine gewisse Ordnung bringen (also zusammengehörigkeit zwischen Elementen darstellen). Die eigentliche Zeichnung ist mit dem 2D Bild Element realisiert (da werden dann die definierten Objekte gezeichnet). Denke auf die Art ist das ein guter Kompromiss zwischen Aufwand und Übersichtlichkeit im BD.
Ich hab mal den aktuellen Stand, samt nem geladenen Beispielbild, angehängt - so sieht das aktuell ungefähr aus (Registerkarte ist nur noch nicht gelöscht damit ich die Elemente alle jederzeit im Blick hab ). Die "Buttons" über den Teilfenstern blenden eine Info ein (ganz Links zum Beispiel Mittelpunkt / Punkt o.ä.). Das ist alles wie gesagt noch in Arbeit und nicht endgültig platziert.
btw. die bunten Kreuze stellen jeweils Messpunkte dar (farbcodiert die Messmethode), die komplizierteren Formen dienen a) der Optik (der stilisierte Wafer zum Beispiel - es soll quasi die gemessene Probe abbildbar sein, damit man sich besser zurechtfindet) und b) als Container um Messpunkte zu gruppieren und gruppiert zu bearbeiten (ne bestimmte Anzahl von Messpunkten auf einer Linie zum Beispiel die im ganzen auf andere Messmethoden geändert werden können sollen etc.
Das ist aber wie gesagt natürlich hochgradig vom gerade selektierten Element abhängig, weswegen ich mein FP durch Ausblenden von Gestaltungselementen flexibilisieren will.
Gruß Kiesch
Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
|
|
|
18.01.2011, 23:43
Beitrag #9
|
|
|
| |