Wie kann verhindert werden, dass Benutzer die Größe von Fenstern in JSL ändern?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Dies scheint eine sehr einfache Frage zu sein, aber ich habe mich gefragt: Gibt es eine Möglichkeit, Benutzer daran zu hindern, die Größe von Fenstern/Dialogen mithilfe von JSL zu ändern?
Es gibt eine Nachricht, die Sie an ein Anzeigefeld senden können, um automatisches Strecken, minimale und maximale Größe usw. anzuzeigen. Gibt es eine Flagge zum Deaktivieren der Benutzerfunktion zum standardmäßigen Ändern der Fenstergröße (z. B. zeigt der Mauszeiger beim Bewegen des Mauszeigers die Größenänderungspfeile nicht an?). am Rand eines Fensters? Scheint, als ob da etwas sein sollte, aber ich kann es scheinbar nicht finden.
Danke.
Betreff: Wie kann verhindert werden, dass Benutzer die Größe von Fenstern in JSL ändern?Tolle Vorschläge, Dave!Ich mag Ihr Design wirklich und werde versuchen, ähnliche Dinge zu machen.Normalerweise verwende ich die von Ihnen am Ende angegebene Outline-Box-Lösung, die einfach und leicht zu implementieren ist, aber nicht immer das professionellste Design aufweist.Ich glaube, es kommt wirklich darauf an, wer der Endbenutzer ist.Bei den meisten meiner Drehbücher bin das eigentlich nur ich.
Betreffend: " Um den Dialog zu schließen, kann entweder die Inhaltsgröße auf Null gesetzt oder der Inhalt gelöscht werden (die Dialogwerte können zum einfachen Neuladen in einem Namespace zwischengespeichert werden).
Ich glaube, ein „If box()“ wäre eine einfachere Lösung.
Betreff: Wie kann verhindert werden, dass Benutzer die Größe von Fenstern in JSL ändern?Aus Programmiersicht ist es schwierig, das Problem der Größenänderung zu umgehen, da die Größenänderung von Anzeigefeldern in der JMP-Benutzeroberfläche verankert ist.Alles in allem halte ich es für sehr nützlich, z. B. ein Listenfeld zu erweitern, wenn Sie eine große Anzahl von Elementen oder Elemente mit langen Namen haben.Aber es kann das Leben schwer machen, wenn Sie versuchen, eine ästhetisch ansprechende Benutzeroberfläche zu entwerfen.Splitterboxen können hilfreich sein, neigen aber auch dazu, die Benutzer dazu zu ermutigen, die Größe der geteilten Komponenten zu ändern!Wenn Sie ein einzelnes Fenster haben möchten, das sowohl Benutzerdialog- als auch Ausgabeelemente enthält, müssen Sie meiner Meinung nach über den Grad der Interaktion nachdenken. Ich habe oft diese Art von Konfiguration, bei der der Dialog für relativ seltene Interaktionen gedacht ist.Mein bevorzugter Ansatz besteht darin, eine Schaltfläche im Fenster zu haben, die als Umschalter zum Ein- und Ausschalten des Dialogs dient:

(Berichtsfenster ohne Dialog – die linke mittlere Schaltfläche „Optionen“ schaltet den Dialog ein)

(Berichtsfenster mit aktiviertem Dialog)
Auf der einfachsten Ebene besteht dies aus zwei Inhalten, die an einer H-Listenbox ausgerichtet sind.
Um den Dialog zu schließen, kann entweder die Inhaltsgröße auf Null gesetzt oder der Inhalt gelöscht werden (die Dialogwerte können zum einfachen Neuladen in einem Namespace zwischengespeichert werden).
Eine einfachere Lösung besteht darin, eine Gliederungsbox zu verwenden, die horizontal an Ihrem Inhalt ausgerichtet ist:
dt = Offen ( „$SAMPLE_DATA/Big Class.jmp“ ) ;
Dialog = V-Listenfeld (
Gliederungsfeld ( „Demo-Dialog“ ,
<< Umriss der engen Orientierung ( "Vertikal" ) ,
Aufstellungsbox ( NCol ( 2 ) , Abstand ( 10 ) ,
Textfeld ( „Label 1“ ) ,
Textbearbeitungsfeld ( „Wert 1“ ) ,
Textfeld ( „Etikett 2“ ) ,
Textbearbeitungsfeld ( „Wert 2“ ) ,
)
)
) ;
Inhalt = V-Listenfeld (
Bivariat ( Y ( : Gewicht ) , X ( : Höhe ) )
) ;
Neues Fenster ( „Bericht mit Dialog“ ,
H-Listenfeld (
Dialog ,
Distanzbox ( Größe ( 10 , 0 )) ,
Inhalt
)
) ;

Die Meldung Outline Close Orientation ermöglicht das Einklappen des Inhalts auf die Seite des Fensters:

- Nur ein paar Ideen.
Dave
Betreff: Wie kann verhindert werden, dass Benutzer die Größe von Fenstern in JSL ändern?Stichwort „Programmiersprache“, wobei jsl wiederum eine Skriptsprache ist.
Betreff: Wie kann verhindert werden, dass Benutzer die Größe von Fenstern in JSL ändern?Nochmals vielen Dank msharp,
Bei Berichtsdialogen habe ich kein Problem damit, dass der Benutzer die Größe des Fensters ändern kann. Dies galt jedoch für Dialoge, bei denen ich um Benutzereingaben gebeten habe. Diese haben eine feste Anzahl von Feldern, in die sie Informationen eingeben können, und meiner Meinung nach sollte es nicht nötig sein, die Größe zu ändern, aber das dient nur der Ästhetik und ist im Großen und Ganzen kein großes Problem. Es ist nur so, dass Sie in anderen Programmiersprachen, in denen Sie GUI-Widgets haben, die Möglichkeit haben, den Benutzer daran zu hindern, die Größe von Dialogen wie Warndialogen und dergleichen zu ändern, da die Größenänderung keinen wirklichen Zweck erfüllt. Ich dachte nur, es wäre eine nützliche Option.
Vielen Dank auf jeden Fall für Ihr Beispiel einer H/V-Splitterbox, das werde ich in Zukunft auf jeden Fall nutzen. Prost.
Betreff: Wie kann verhindert werden, dass Benutzer die Größe von Fenstern in JSL ändern?Wenn das der Zweck ist, gibt es einen Grund, warum Sie nicht den gesamten Inhalt in einem Fenster unterbringen können?Die Verwendung der H-Splitter-Box/V-Splitter-Box ist wahrscheinlich die beste Lösung.Im folgenden Beispiel bleiben alle Anzeigefelder im Fenster sichtbar und es werden beim Ändern der Fenstergröße graue Bereiche vermieden.Aus dem Scripting-Index:
Namen standardmäßig hier ( 1 ) ;
Neues Fenster ( „Splitter“ ,
V-Splitter-Box (
Größe ( 800 , 600 ) ,
H-Verteilerbox ( Graph = Diagrammfeld () , Skriptbox () , << Größen ( { 0,6 , 0,4 } ) ) ,
H-Verteilerbox (
Bild = Bilderkiste ( Offen ( „$SAMPLE_IMAGES/tile.jpg“ , jpg ) ) ,
Abstandshalter = Distanzbox () ,
<< Größen ( { 0,4 , 0,6 } )
)
)
) ;
Graph [ FrameBox ( 1 )] << Stellen Sie die automatische Dehnung ein ( 1 , 1 ) ;
Bild << Legen Sie die Mindestgröße fest ( 100 , 100 ) ;
Bild << Legen Sie die maximale Größe fest ( 500 , 500 ) ;
Bild << Stellen Sie die automatische Dehnung ein ( 1 , 1 ) ;
Abstandshalter << Füllung festlegen ( 1 ) ;
Abstandshalter << Farbe ( "Rot" ) ;
Abstandshalter << Stellen Sie die automatische Dehnung ein ( 1 , 1 ) ;
Dies wird eine bessere Lösung sein.Sie werden Ihren Endbenutzer am Ende wirklich verärgern, wenn Sie ihm nicht erlauben, die Fenstergröße zu ändern.
Betreff: Wie kann verhindert werden, dass Benutzer die Größe von Fenstern in JSL ändern?Hallo msharp,
Danke für die Antwort. Diese Methode scheint einwandfrei zu funktionieren, und es gibt wahrscheinlich noch ein paar andere Möglichkeiten, dieses Verhalten zu „überlisten“.
Mein Grund dafür ist, dass ich eine benutzerdefinierte Anwendung erstelle, die über Dialogfenster sowohl für Benutzereingaben als auch für Berichte verfügt. Ich möchte nicht, dass der Benutzer in der Lage ist, auf das Fenster zu klicken und dessen Größe zu ändern, sodass das Fenster am Ende entweder einige der Anzeigefelder innerhalb des Fensters verbirgt oder es weiter zieht und am Ende eine Menge hässlicher grauer Flächen entsteht. Ich gebe zu, das hat rein ästhetische Gründe, aber ich dachte, es wäre eine nützliche Option für Leute, die Anwendungen in JSL zur Verteilung schreiben.
Nochmals Prost.
Betreff: Wie kann verhindert werden, dass Benutzer die Größe von Fenstern in JSL ändern?Die von Ihnen beschriebenen Funktionen dienen alle der Größenänderung von Anzeigefeldern innerhalb von Fenstern.Aber es hört sich so an, als ob Sie verhindern möchten, dass das Fenster selbst geändert wird.Ich habe keine Ahnung, warum Sie das tun sollten, aber das wäre ein Problem, das ein Poweruser des Betriebssystems vielleicht beantworten könnte.Dies ist keine Funktionalität, die Sie in einer Skriptsprache erhalten werden.Sie müssten Änderungen an Windows 7,8,10 oder Mac: Snow Leopard, Capitan usw. vornehmen.
Wie dem auch sei, man könnte schummeln.Vielleicht so etwas:
jetzt = neues Fenster ( „Keine Größenänderung für Sie“ ) ; //Beispielfenster erstellen
Größe = jetzt << Fenstergröße abrufen ; // Größe abrufen
//Größenänderungsfunktion
Größe ändern = Funktion ({} ,
jetzt << Fenstergröße festlegen ( Größe [ 1 ] , Größe [ 2 ]) ; //Fenstergröße ändern
Zeitplan ( 0,1 , Größe ändern ()) ; //Fenstergröße alle 0,1 Sekunden ändern
) ;
//Funktion aufrufen
Größe ändern () ;
//Planerfenster ausblenden, um die Illusion zu vervollständigen
Warten ( 0 ) ;
Fenster ( "Planer" ) << Schaufenster ( 0 ) ;
//alternativ zu << Fenstergröße festlegen:
//nw << Zoomfenster;