Come impedire agli utenti di ridimensionare le finestre in JSL?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Potrebbe sembrare una domanda molto semplice, ma mi chiedevo: esiste un modo per impedire agli utenti di ridimensionare finestre/dialoghi utilizzando JSL?
C'èun messaggio che puoi inviare a una casella di visualizzazione per l'allungamento automatico, la dimensione minima e massima, ecc. Esiste un flag per disattivare la capacità dell'utente di ridimensionare le finestre per impostazione predefinita (ovvero il cursore del mouse non mostra le frecce di ridimensionamento quando si passa con il mouse sul bordo di una finestra? Sembra che dovrebbe esserci qualcosa, ma non riesco a trovarlo.
Grazie.
Re: Come impedire agli utenti di ridimensionare le finestre in JSL?Ottimi suggerimenti Dave!Mi piace molto il tuo design e cercherò di fare cose simili.Di solito utilizzo la soluzione della casella di contorno che hai fornito alla fine, che è semplice e facile da implementare, ma non sempre ha un design dall'aspetto più professionale.Credo che dipenda davvero da chi è l'utente finale.Per la maggior parte delle mie sceneggiature sono davvero solo io.
Riguardo: " Per chiudere la finestra di dialogo è possibile impostare la dimensione del contenuto su zero oppure eliminare il contenuto (i valori della finestra di dialogo possono essere memorizzati nella cache in uno spazio dei nomi per un facile ricaricamento)."
Credo che un "If box()" sarebbe una soluzione più semplice.
Re: Come impedire agli utenti di ridimensionare le finestre in JSL?È difficile aggirare il problema del ridimensionamento dal punto di vista della programmazione perché il ridimensionamento delle caselle di visualizzazione è inerente all'interfaccia utente di JMP.A conti fatti, penso che sia davvero utile, ad esempio, allungare una casella di riepilogo quando hai un gran numero di elementi o elementi con nomi lunghi.Ma può rendere la vita difficile quando si tenta di progettare un'interfaccia esteticamente gradevole.I divisori possono aiutare, anche se tendono anche a incoraggiare gli utenti a ridimensionare i componenti divisi!Se vuoi avere un'unica finestra contenente sia la finestra di dialogo utente che gli elementi di output, penso che tu debba pensare al livello di interazione. Ho spesso questo tipo di configurazione in cui la finestra di dialogo è per interazioni relativamente poco frequenti.Il mio approccio preferito è avere un pulsante sulla finestra che funge da interruttore per attivare o disattivare la finestra di dialogo:

(finestra del rapporto senza finestra di dialogo: il pulsante centrale sinistro "Opzioni" attiverà la finestra di dialogo)

(finestra del report con la finestra di dialogo attivata)
Al livello più elementare si tratta di due contenuti allineati con una casella di riepilogo H.
Per chiudere la finestra di dialogo è possibile impostare la dimensione del contenuto su zero oppure eliminare il contenuto (i valori della finestra di dialogo possono essere memorizzati nella cache in uno spazio dei nomi per un facile ricaricamento).
Una soluzione più semplice consiste nell'utilizzare una casella di contorno allineata orizzontalmente con il contenuto:
dt = Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
dialogo = Casella di riepilogo V (
Casella di contorno ( "Dialogo dimostrativo" ,
<< Delineare l'orientamento ravvicinato ( "Verticale" ) ,
Casella di formazione ( NCol ( 2 ) , Spaziatura ( 10 ) ,
Casella di testo ( "Etichetta 1" ) ,
Casella di modifica del testo ( "valore 1" ) ,
Casella di testo ( "Etichetta 2" ) ,
Casella di modifica del testo ( "valore 2" ) ,
)
)
) ;
contenuto = Casella di riepilogo V (
Bivariato ( Y ( : peso ) , X ( : altezza ) )
) ;
Nuova finestra ( "Rapporto con finestra di dialogo" ,
Casella di riepilogo H (
dialogo ,
Scatola distanziatrice ( Misurare ( 10 , 0 )) ,
contenuto
)
) ;

Il messaggio Profilo Chiudi Orientamento consente al contenuto di comprimersi sul lato della finestra:

- Solo alcune idee.
Dave
Ri: Come impedire agli utenti di ridimensionare le finestre in JSL?Parola chiave "linguaggio di programmazione", dove ancora una volta jsl è un linguaggio di scripting.
Ri: Come impedire agli utenti di ridimensionare le finestre in JSL?Grazie ancora, MSharp
Per le finestre di dialogo dei rapporti non ho problemi con la possibilità da parte dell'utente di ridimensionare la finestra, era per le finestre di dialogo in cui chiedevo l'input dell'utente. Questi hanno un numero fisso di campi in cui possono inserire informazioni e secondo me non dovrebbero aver bisogno di ridimensionarli, ma è puramente estetico e non è un grosso problema nel grande schema delle cose. È solo che in altri linguaggi di programmazione in cui sono presenti widget GUI, hai la possibilità di impedire all'utente di ridimensionare le finestre di dialogo, come finestre di avviso e simili, poiché il ridimensionamento non ha uno scopo reale. Ho solo pensato che sarebbe stata un'opzione utile averlo.
In ogni caso, grazie per il tuo esempio di splitter box H/V, è qualcosa che utilizzerò sicuramente in futuro. Saluti.
Ri: Come impedire agli utenti di ridimensionare le finestre in JSL?Se questo è lo scopo, c'è qualche motivo per cui non puoi inserire tutto il contenuto in un'unica finestra?L'uso dello sdoppiatore ad H/sdoppiatore a V è probabilmente la soluzione migliore.L'esempio seguente mantiene tutte le caselle di visualizzazione visibili nella finestra e previene lo spazio grigio durante il ridimensionamento della finestra.Dall'indice degli script:
Nomi predefiniti qui ( 1 ) ;
Nuova finestra ( "Divisore" ,
Scatola divisore a V (
Misurare ( 800 , 600 ) ,
Scatola divisoria H ( grafico = Casella del grafico () , Casella di copione () , << Dimensioni ( { 0,6 , 0.4 } ) ) ,
Scatola divisoria H (
fig = Scatola immagine ( Aprire ( "$SAMPLE_IMAGES/piastrella.jpg" , jpg ) ) ,
distanziatore = Scatola distanziatrice () ,
<< Dimensioni ( { 0.4 , 0,6 } )
)
)
) ;
grafico [ FrameBox ( 1 )] << Imposta l'allungamento automatico ( 1 , 1 ) ;
fig << Imposta la dimensione minima ( 100 , 100 ) ;
fig << Imposta la dimensione massima ( 500 , 500 ) ;
fig << Imposta l'allungamento automatico ( 1 , 1 ) ;
distanziatore << Imposta riempimento ( 1 ) ;
distanziatore << Colore ( "Rosso" ) ;
distanziatore << Imposta l'allungamento automatico ( 1 , 1 ) ;
Questa sarà una soluzione migliore.Finirai davvero per infastidire il tuo utente finale se non gli permetti di ridimensionare le finestre.
Ri: Come impedire agli utenti di ridimensionare le finestre in JSL?Ciao MSharp,
Grazie per la risposta. Sembra che questo metodo funzioni bene e probabilmente ci sono altri modi per "imbrogliare" questo comportamento.
Il motivo per cui lo desidero è che sto creando un'applicazione personalizzata dotata di finestre di dialogo sia per l'input dell'utente che per il reporting. Non voglio che l'utente possa fare clic e ridimensionare la finestra in modo che la finestra finisca per nascondere alcune delle caselle di visualizzazione all'interno della finestra o trascinarla più ampia e ritrovarsi con un carico di brutto spazio grigio. Lo ammetto, questo è per ragioni puramente estetiche, ma ho pensato che sarebbe stata un'opzione utile per le persone che scrivono applicazioni in JSL per la distribuzione.
Saluti ancora.
Ri: Come impedire agli utenti di ridimensionare le finestre in JSL?Le funzioni che descrivi servono tutte per ridimensionare le caselle di visualizzazione all'interno delle finestre.Ma sembra che tu voglia impedire che la finestra stessa venga modificata.Non ho idea del motivo per cui vorresti farlo, ma questo sarebbe un problema a cui un utente esperto del sistema operativo potrebbe essere in grado di rispondere.Questa non è una funzionalità che otterrai in un linguaggio di scripting.Dovresti apportare modifiche a Windows 7,8,10 o Mac: Snow Leopard, Capitan ecc.
Comunque potresti imbrogliare.Forse qualcosa del genere:
ora = nuova finestra ( "Nessun ridimensionamento per te" ) ; //Crea una finestra di esempio
misurare = ora << Ottieni la dimensione della finestra ; // Ottieni la dimensione
//Funzione di ridimensionamento
ridimensionare = funzione ({} ,
ora << Imposta la dimensione della finestra ( misurare [ 1 ] , misurare [ 2 ]) ; //Ridimensiona la finestra
programma ( 0,1 , ridimensionare ()) ; //Ridimensiona la finestra ogni 0,1 secondi
) ;
//chiama la funzione
ridimensionare () ;
//nascondi la finestra dello scheduler per completare l'illusione
Aspettare ( 0 ) ;
finestra ( "Programmatore" ) << Mostra finestra ( 0 ) ;
//in alternativa a <
//nw << Zoom finestra;