BenutzeroberflächeHi,
Ich habe eine Benutzeroberfläche erstellt und möchte einige Änderungen daran vornehmen. Dies ist unten dargestellt:
Ich mag es, "OK" und "Abbrechen" an den unteren Rand des Fensters zu verschieben und in "Produktnamen auswählen" nur ein Produkt auszuwählen (kombiniere rechts und links). Ich möchte auch wissen, wie man diese Optionen auswählt und sie in eine Variable einfügt, die für weiteres Skripting verwendet werden kann.
Ich habe das eigentliche Skript beigefügt.
Vielen Dank für deine Hilfe.

Betreff: BenutzeroberflächeIch danke Ihnen sehr.
Betreff: BenutzeroberflächeSie können das ausgewählte Produkt im Code für den OK-Button erfassen.
okb = button box("OK",
one_product = rb1 << get selected;
),Betreff: BenutzeroberflächeIch glaube, wenn Sie den Code verstehen, den Sie erhalten haben, sollten Sie in der Lage sein, die Benutzeroberfläche zu erweitern, um den Variablennamen selbst zu erfassen.
Betreff: BenutzeroberflächeVielen Dank. Es funktioniert jetzt gut. Was ist mit der Benutzerauswahl für den Produktnamen? Wie erfasse ich das als Variablennamen und verwende es, nachdem das Fenster geschlossen wurde.
Ich schätze Ihre Hilfe. Vielen Dank
Betreff: BenutzeroberflächeDa Sie ein modales Fenster verwenden, müssen Sie den Gruppenbefehl in das neue Fenster verschieben ():
)
rb1 << group(rb2),
);
Betreff: BenutzeroberflächeDas Problem ist, dass Sie ein modales Fenster verwenden.Ich werde diese Zeile, die die Radioboxen gruppiert, nicht verarbeiten, bis Sie das Fenster schließen.
Sie können dies tun und das modale Fenster beibehalten:
panel box("Choose Product:",
hlist box(
rb1 = radio box(list1),
rb2 = radio box(list2)
),
rb1 << group(rb2);
),
Betreff: BenutzeroberflächeHi,
Vielen Dank. Ihr Skript funktioniert wie erwartet. Aber wenn ich es mit dem Personal oben bei "Produkt auswählen" kombiniere, sehe ich das folgende Bild:

Ich habe das Skript nach Änderungen beigefügt. Danke für Ihre Hilfe.
Betreff: BenutzeroberflächeHa ha, sie haben mir in Hogwarts viel über JSL beigebracht.
Aber wirklich das Geheimrezept ist der Skriptindex.Verwenden Sie es die ganze Zeit.
Betreff: Benutzeroberfläche
@pmroz schrieb:
Wenn Sie die <<-Gruppenmethode verwenden, können Sie Radioboxen nebeneinander haben, die als eine Radiobox fungieren, dh es kann nur eine Option ausgewählt werden.Hier ist ein Beispiel:
list1 = {"AAA", "BBB", "CCC", "DDD"};
list2 = {"XXX", "YYY", "ZZZ"};
nw = new window("Combine Radio boxen",
panel box("Choose Product:",
hlist box(
rb1 = radio box(list1),
rb2 = radio box(list2)
),
),
panel box("Actions",
hlist box(
okb = button box("OK",
one_product = rb1 << get selected;
print("Product Selected: " || one_product);
nw << close window;
),
canb = button box("Cancel",
nw << close window;
),
),
)
);
rb1 << group(rb2);
Mann, das ist Hexerei.Schöner Tipp!Vielen Dank.
Betreff: BenutzeroberflächeWenn Sie die <<-Gruppenmethode verwenden, können Sie Radioboxen nebeneinander haben, die als eine Radiobox fungieren, dh es kann nur eine Option ausgewählt werden.Hier ist ein Beispiel:
list1 = {"AAA", "BBB", "CCC", "DDD"};
list2 = {"XXX", "YYY", "ZZZ"};
nw = new window("Combine Radio boxen",
panel box("Choose Product:",
hlist box(
rb1 = radio box(list1),
rb2 = radio box(list2)
),
),
panel box("Actions",
hlist box(
okb = button box("OK",
one_product = rb1 << get selected;
print("Product Selected: " || one_product);
nw << close window;
),
canb = button box("Cancel",
nw << close window;
),
),
)
);
rb1 << group(rb2);

Betreff: BenutzeroberflächeEine Sache, die ich empfehlen würde, ist, die Zeilen, die die Formate für str1 und str2 festlegen, außerhalb der New Window()-Funktion zu verschieben.Sie können alle Anzeigefelder zuerst in New Window() definieren und diese Anzeigefelder dann ändern.Dadurch bleibt Ihr Code etwas sauberer.
Als nächstes können Sie die schließende Klammer des Listenfelds V an das Ende der Liste der Anzeigefelder verschieben.Das H-Listenfeld, das die Schaltflächen OK und Abbrechen enthält, ist in demselben H-Listenfeld verschachtelt, das die Bedienfeldfelder mit Ihren Optionsfeldern enthält.Verschieben Sie einfach das H-Listenfeld, das OK und Abbrechen enthält, außerhalb seines aktuellen übergeordneten H-Listenfeldcontainers und machen Sie es zu einem gleichgeordneten Element dieses H-Listenfelds innerhalb des übergeordneten V-Listenfeldcontainers.Dadurch werden diese Schaltflächen nach unten verschoben.
Es ist schwierig, mehrere Spalten in einem Optionsfeldfeld zu haben, und ich bin mir nicht sicher, ob es den Aufwand wert ist.Sie benötigen 2 davon, wie Sie es jetzt haben (obwohl ich beide in dieselbe Panel-Box stecken würde, anstatt in separate).Das Problem ist, dass Sie keine Radiobox haben können, in der nichts ausgewählt ist.Daher wäre es unmöglich, dass eine Radiobox gelöscht wird, so dass es nur 1 Auswahl über beide Radioboxen gibt.Ziehen Sie stattdessen ein Listenfeld in Betracht, damit Sie es mit einer Bildlaufleiste kompakt halten und die Anzahl der anzuzeigenden Zeilen festlegen können.
Hier das Ergebnis mit meinen Vorschlägen:
Clear Log();
// Time filtering //
defuplim = Today();
deflowlim = Today() - In Days( 150 );
ww = New Window( "Pick Your Dates in yyyy-mm-dd format",
//<<MODAL></MODAL>lb << Set Max Selected(1);
Um vom Benutzer auf die Informationen in den Anzeigefeldern zugreifen zu können, müssen Sie lediglich eine Funktion für die OK-Schaltfläche definieren, die dies tut.Siehe Skripting-Index im Hilfemenü.Wenn Sie nach „Nummern-Bearbeitungsfeld“ suchen und das Dropdown-Menü von „Alle Kategorien“ auf „Anzeigefeld“ ändern, können Sie alle Nachrichten sehen, die Sie an ein Nummern-Bearbeitungsfeld senden können.Eine davon ist „Get“.Eine ähnliche Meldung gibt es für jedes Anzeigefeld mit Benutzereingabe.
Ihre Funktion für den OK-Button könnte etwa so aussehen:
Ok_btn << Set Script(On OK());
On OK = Function({},
start_date = str1 << Get;
end_date = str2 << Get;
Print(start_date, end_date);
);