Nummernbearbeitungsfeld im ÄnderungsskriptIch bin neu bei JSL und Application Builder, also haben Sie Geduld.
Ich versuche, ein Dialogfeld zu erstellen, das eine Reihe gepaarter Nummernbearbeitungsfelder enthält.Einer von jedem Paar repräsentiert eine „Startzeit“ und der andere eine entsprechende „Endzeit“:
Ich möchte die Situation vermeiden, in der der Benutzer eine „Startzeit“ später als die „Endzeit“ oder eine „Endzeit“ vor der „Startzeit“ eingibt.
Mein erster Gedanke war, jedem Feld ein „Bei Änderung“-Skript hinzuzufügen, etwa so für das „Start“-Feld:
If( (Start << Get) > (End << Get),
End << Set( Start << Get )
);
und so für das Feld „Ende“:
If( Start << Get > End << Get,
Start << Set( End << Get )
);
Dies funktioniert jedoch nicht (in dem Sinne, dass nichts passiert, wenn der unerwünschte Zustand auftritt).
Ich mache wahrscheinlich etwas ziemlich Dummes, aber Hilfe wäre dankbar.
Betreff: Nummernbearbeitungsfeld im ÄnderungsskriptVielen Dank für all die Hilfe, Jungs!!!
Betreff: Nummernbearbeitungsfeld im ÄnderungsskriptDas Erlernen von Application Builder erfordert etwas Zeit, aber es lohnt sich.Ich verwende es seit JMP Version 10 und es wird mit jeder Version besser.Ich habe eine Präsentation beigefügt, die ich beim JSL Roundtable 2013 von JMP Discovery gehalten habe und die möglicherweise hilfreich ist.
Betreff: Nummernbearbeitungsfeld im ÄnderungsskriptJa, Sie können die gespeicherten App Builder-Dateien in einem Texteditor öffnen, aber die App Builder-GUI ist die einzige unterstützte Möglichkeit zum Bearbeiten der Datei. (Ein Blick lohnt sich immer noch, wenn Sie eine Vorstellung davon haben möchten, was passiert, wenn das Skript geöffnet wird.)
Hier finden Sie einige Links zu Ressourcen im Internet.
https://community.jmp.com/t5/Discovery-Summit-2016/Building-Dashboards-and-Applications-Poster-and-Tutorial/ta-p/22374
[Video]
Betreff: Nummernbearbeitungsfeld im ÄnderungsskriptVielen Dank an alle für die tollen Vorschläge. Ich habe sie noch nicht alle ausprobiert, aber ich werde es tun, sobald ich eine Pause von meiner „richtigen“ Arbeit habe.
Mittlerweile denke ich, dass die Ursache vieler meiner Probleme darin liegt, dass ich keine detaillierte Dokumentation für den App Builder (AB) gefunden habe. Es muss existieren, aber ich kann es nicht finden. Hat jemand einen Link?
Ich wusste zum Beispiel nicht, wofür das Feld „Skript“ im Menü „Eigenschaften“ von AB gedacht war, und ich konnte keine Verbindung zur Number Edit Box (NEB)-Dokumentation herstellen. Offensichtlich tappe ich hier weiter.
Ein weiteres Beispiel für meine Verwirrung: Das Eingabefeld „Inkrement“ im AB-Eigenschaftenbereich für NEBs ist vorhanden, akzeptiert jedoch keinen Eintrag. Ich könnte weitermachen...
Wie gesagt, eine gute Dokumentation zu AB und auch einige hervorragende Beispiele für komplexe modale Dialogfeldskripte wären großartig.Gibt es außerdem eine Möglichkeit, den Code zu sehen, den AB für die Schnittstelle generiert?
Betreff: Nummernbearbeitungsfeld im ÄnderungsskriptHier ist das Beispiel.Erstellt mit JMP 13, funktioniert daher möglicherweise nicht in früheren Versionen.
Betreff: Nummernbearbeitungsfeld im ÄnderungsskriptSie müssen Skripte einrichten, um jedes der Nummernbearbeitungsfelder aufzurufen.Ich habe ein einfaches Beispiel erstellt:
start_time_neb : Zahlenbearbeitungsfeld für die Startzeit
end_time_neb : Zahlenbearbeitungsfeld für die Endzeit
Ich habe mit der rechten Maustaste auf jedes der Zahlenbearbeitungsfelder geklickt und ausgewählt Skripte > Skript (nicht Nummer geändert).Hier sind die Skripte, die ich hinzugefügt habe:
// This function is called when the number edit value is committed
start_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = this << Get;
end_time_value = end_time_neb << get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The Start Time cannot be after the End Time")
);
this << set(.);
);
);
);
// This function is called when the number edit value is committed
end_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = start_time_neb << get;
end_time_value = this << Get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The End Time cannot be before the Start Time")
);
this << set(.);
);
);
);
Betreff: Nummernbearbeitungsfeld im ÄnderungsskriptEin paar Dinge zum Ausprobieren:
1. Schauen Sie in das Protokollfenster. Auch wenn scheinbar nichts passiert, wird möglicherweise ein Fehler gemeldet, der Ihnen einen Hinweis gibt
2. Reduzieren Sie den Code auf etwas möglichst Einfaches.Dies wird Ihnen helfen herauszufinden, was funktioniert und was nicht.Dies scheint beispielsweise so zu funktionieren, wie Sie es beschreiben:
New Window("Test",
neb1 = NumberEditBox(0),
neb2 = NumberEditBox(0)
);
neb1 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb2 << Set( neb1 << Get )
)
);
neb2 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb1 << Set( neb2 << Get )
)
);
Betreff: Nummernbearbeitungsfeld im ÄnderungsskriptSie können dies tun, indem Sie die Min/Max-Werte für die Start- und End-NumberEditBoxes innerhalb der SetFunction (anstelle von OnChange) festlegen.
New Window( "Example",
Lineup Box( N Col( 2 ),
Text Box( "Work Starts" ),
Text Box( "Work Ends" ),
start_neb = Number Edit Box(
0,
<<SET format=""></SET>