Quale proprietà farebbe sì che la finestra si allungasse automaticamente se modificassi le dimensioni delle caselle di visualizzazione al suo interno?Ho un'interfaccia grafica con più caselle di visualizzazione, alcune delle quali sono caselle di elenco colonne che l'utente può ridimensionare.
Quando lo fanno, la finestra crea barre di scorrimento. Io non voglio barre di scorrimento. Voglio che la finestra si ridimensioni automaticamente per adattarsi a tutto. Proprio come fa qualsiasi piattaforma (Fit Y by X, per esempio).
Non riesco a trovare una combinazione di messaggi che faccia al caso mio... Qualcuno può indicarmi la giusta direzione?
Aggiornamento:
Ecco un'illustrazione.
Se esegui questo script:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
bb = Border Box( Left( 10 ), Right( 10 ), Top( 5 ), Bottom( 10 ), Sides( 15 ),
clb = Col List Box( all, width( 250 ), maxSelected( 1 ) ),
);
nw = New Window( "Col List Box Example",
bb
);
si aprirà una finestra con una casella di riepilogo Col.
Se si tenta di ridimensionare questa casella di riepilogo oltre i limiti della finestra, la finestra si espanderà.
Ma se provi a cambiare la dimensione della finestra anche solo di poco, non risponderà a Col List Box che cambia dimensione oltre la dimensione della finestra. Produrrà dei cursori.
Per qualche motivo il contenuto del mio componente aggiuntivo non si adatta verticalmente alla finestra.
L'unico modo per risolvere il problema che sono riuscito a trovare è stato cambiare la dimensione della finestra. Ma ora che abbiamo cambiato la dimensione della finestra, non risponde più ai cambiamenti di dimensione del contenuto.
È un bug? O è un comportamento previsto? C'è un modo per risolverlo?
Automazione e scriptingR: Quale proprietà farebbe sì che la finestra si allungasse automaticamente se modificassi le dimensioni delle caselle di visualizzazione al suo interno?Molto difficile da dire perché non sono sicuro di quali problemi stai riscontrando (aggiungere caselle di scorrimento non è un vero problema, hanno una ragione per essere lì la maggior parte delle volte). Hai << Set Stretch (o << Set Auto Stretching) che potrebbe funzionare in alcuni casi, ma dipenderà anche da come hai costruito la tua GUI.
Non sono esattamente sicuro di cosa intendi con Adatta Y alla piattaforma X (report) che ridimensiona automaticamente per adattare tutto, perché secondo me non lo fa. Aggiunge caselle di scorrimento quando è necessario. Sono lì per uno scopo, se il contenuto non si adatta alla finestra, lascia che l'utente continui a sfogliare il contenuto E fagli sapere che qualcosa non è stato mostrato. E se intendi i launcher e come il ridimensionamento della loro casella di riepilogo ridimensiona la finestra, è molto probabile che sia correlato al modo in cui hai creato la GUI e aggiungeranno anche caselle di scorrimento se necessario.
R: Quale proprietà farebbe sì che la finestra si allungasse automaticamente se modificassi le dimensioni delle caselle di visualizzazione al suo interno?Mi scuso per non essere stato molto chiaro. Mi riferivo alla finestra di avvio della piattaforma Fit Y by X. Avvia la piattaforma, la finestra in cui esegui il cast delle colonne nei ruoli. Se ridimensioni una qualsiasi delle Col List Boxes, la finestra verrà ridimensionata di conseguenza senza aggiungere barre di scorrimento.
Il mio componente aggiuntivo ha una piattaforma di avvio molto simile, che aggiunge barre di scorrimento quando ridimensiono le caselle di elenco a colonne.
Inoltre, per favore controlla un aggiornamento sulla domanda. Lo script che ho postato mostra un comportamento simile.
Oltre a ciò, ho scoperto che ha a che fare con la funzione di nascondimento automatico della barra delle applicazioni su Windows: se la attivo e la mia barra delle applicazioni è nascosta, la mia finestra Add-In si apre perfettamente, adattando tutto il contenuto. Ma non appena disattivo il nascondimento automatico, la finestra si ridimensiona per nascondere la parte inferiore del contenuto e appare la barra di scorrimento verticale. Oltre a ciò, la parte inferiore della finestra Add-In non tocca nemmeno la barra delle applicazioni. Questo è sicuramente un bug.
R: Quale proprietà farebbe sì che la finestra si allungasse automaticamente se modificassi le dimensioni delle caselle di visualizzazione al suo interno?Ecco la parte inferiore della mia finestra con questa pagina come sfondo. Ho attivato la funzione Nascondi automaticamente la barra delle applicazioni. Tutto è come mi aspetterei.

Non appena vado alle impostazioni della barra delle applicazioni di Windows e disattivo la funzione di nascondimento automatico, la mia finestra si ridimensiona in modo che appaia una barra di scorrimento verticale:

Le posizioni degli screenshot sono identiche al pixel. L'unica cosa che ho fatto tra di loro è stata deselezionare "Nascondi automaticamente la barra delle applicazioni" nelle impostazioni di Windows. Se lo ricontrollo, tornerà al primo screenshot. Non che la finestra non tocchi nemmeno la barra delle applicazioni.
Quindi, per risolvere questo problema ho dovuto impostare esplicitamente la dimensione della finestra. E questo ha interrotto l'allungamento automatico della finestra quando si cambia Col List Box, proprio come nello script sopra.
R: Quale proprietà farebbe sì che la finestra si allungasse automaticamente se modificassi le dimensioni delle caselle di visualizzazione al suo interno?Questo script presenta esattamente lo stesso problema del mio piccolo script nell'aggiornamento del primo messaggio.

Quando lo esegui e provi a cambiare Col List Boxes oltre le dimensioni della finestra, la finestra si allunga perfettamente. Ma non appena provi a cambiare le dimensioni della finestra stessa afferrando quell'angolo con i puntini contrassegnati con un cerchio rosso sullo screenshot e spostandolo anche solo di un paio di pixel, la finestra smette di rispondere al cambiamento delle dimensioni di Col List Boxes e smette di allungarsi, creando invece delle barre di scorrimento.
R: Quale proprietà farebbe sì che la finestra si allungasse automaticamente se modificassi le dimensioni delle caselle di visualizzazione al suo interno?Poiché ora stai ridimensionando la finestra e non la casella di riepilogo, semplifica la tua demo.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt
, << Set N Lines(2)
)
)
)
)
)
);
Ora inizia a capire cosa sta succedendo e perché impostare lo stretching qua e là non funzionerà e, si spera (molto probabilmente per sbaglio, come è successo a me) ti accorgerai che devi ricordarti di impostare la dimensione massima (e potenzialmente minima).
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt
, << Set N Lines(2)
)
)
)
)
)
);
show(clb << Get Stretch, clb << Get Min Size, clb << Get Max Size);
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)
Forse è questo che stai cercando? Combinazione di Set Stretch con Fill/Window e Set Max/Min Size?
R: Quale proprietà farebbe sì che la finestra si allungasse automaticamente se modificassi le dimensioni delle caselle di visualizzazione al suo interno?Bene, sembra che in questo semplice caso funzioni.
Tuttavia, ho provato esattamente questo e non ha funzionato con la mia GUI più complessa.
In ogni caso questa sembra essere la soluzione, e la contrassegnerò come tale, devo solo capire come applicarla al mio caso.
R: Quale proprietà farebbe sì che la finestra si allungasse automaticamente se modificassi le dimensioni delle caselle di visualizzazione al suo interno?Puoi saltare il caso semplice se pensi di poter risolvere un problema enorme senza prima risolvere diversi problemi più piccoli, ma il più delle volte è impossibile o richiederà una quantità di tempo non necessaria rispetto alla risoluzione di pochi problemi piccoli/semplici che ti aiutano a comprendere il problema.
Il modo in cui funziona lo stretching dipende molto dalla struttura con cui hai costruito la tua GUI. Di nuovo un semplice esempio, anche se non sono sicuro di quanto pensi che abbiano valore:
Entrambe le caselle di riepilogo delle colonne verranno ridimensionate contemporaneamente quando si utilizza la casella Lineup e si imposta semplicemente lo stretching su una di esse:
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt,
, << Set N Lines(2)
),
Button Box("Responses"),
Col List Box(dt,
, << Set N Lines(2)
)
)
)
)
)
);
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)
La stessa cosa non accadrà se si utilizza V List Box + H List Box
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
V List Box(
H List Box(
Button Box("Responses"),
clb = Col List Box(dt,
, << Set N Lines(2)
)
),
H List Box(
Button Box("Responses"),
Col List Box(dt,
, << Set N Lines(2)
)
)
)
)
)
)
);
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)
Se hai modificato la casella di visualizzazione padre (casella del pannello in questo esempio) per non allungarla, anche gli elementi figlio non si allungheranno.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt,
, << Set N Lines(2)
),
Button Box("Responses"),
Col List Box(dt,
, << Set N Lines(2)
)
)
)
)
)
);
pb << Set Max Size(100, 10);
pb << Set Stretch("Off", "Off");
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)