Tabella Box con celle multilineaHo appena notato un leggero problema (uno in più nella lunga lista di problemi) con Table Box. Sto cercando di aggiungere una stringa abbastanza lunga a Table Box e poiché Table Box non supporta davvero più righe, ho provato a utilizzare Col Box con Table Box(<< Set Wrap())... il problema è che sembra rompi tutto il resto
Names Default To Here(1);
tb = Table Box(
nceb = Number Col Edit Box("Order", []),
scb1 = String Col Box("103width", {}),
cb = Col Box("longstring", {}),
scb2 = String Col Box("104width", {}),
);
nceb << Set Width(40);
scb1 << Set Width(103);
scb2 << Set Width(104);
New window("",
tb
);
textb = Text Box("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADDD", << Set Wrap(150));
long_str = "speciallylongname";
Eval(EvalExpr(
tb << Add Row({1, Expr(long_str), Expr(textb), Expr(long_str)});
));

Sembra che 103width sia in fase di wrapping e venga mostrata solo la seconda riga.
Qualcuno ha delle buone idee su come potrei gestire questo? Questi tre mi vengono subito in mente:
- Devo usare solo Col Boxes con Text Boxes e accettare semplicemente che non posso consentire agli utenti di selezionare le righe in Table Box con la stessa facilità che vorrei?
- Devo scrivere la mia classe personalizzata per il nuovo elemento della casella di visualizzazione (come in rinuncia a Table Boxes)
- Crea colonne nascoste con testo completo e quindi calcola la larghezza massima che posso mostrare in String Col Boxes e mostra solo quelle.
SceneggiaturafinestreRe: Riquadro tabella con celle multilineaHo eseguito il tuo script e ho ottenuto risultati diversi.

e risultati ancora più confusi aggiungendo una seconda riga alla tabella

L'uso di Col Box() con le caselle di testo incorporate sembra aiutare

Re: Riquadro tabella con celle multilinea@txnelson Le differenze nel primo caso potrebbero essere causate da diverse impostazioni dei caratteri (o forse anche livelli di zoom?) Poiché le larghezze sono impostate utilizzando i pixel per quanto ne so.
Il secondo caso è un po' preoccupante, poiché sembra che le righe si confondano in qualche modo. Molto probabilmente riceve il testo dalla riga sbagliata:

(modificato long_str = "11231231312312312312"; per la seconda riga).
L'uso di Col Box con le caselle di testo potrebbe essere l'"unica" soluzione per ora. Peccato che tu non possa fare clic ed evidenziare le righe semplicemente impostando tb << Set Selectable Rows(1); quando si utilizzano scatole col.
Re: Riquadro tabella con celle multilineaTendo a popolare le caselle della tabella in base alle colonne, quindi ho provato questo:
nceb << set({1});
scb1 << set({long_str});
scb2 << set({long_str});
wait(2);
cb << set(lstBoxes);
Ma si è verificato lo stesso problema.L'unico modo in cui potevo farlo funzionare era avere anche scb1 e una casella Col contenente caselle di testo.In genere ho fatto ricorso a fare in modo che la prima colonna di una casella di tabella contenga pulsanti di opzione per consentire le selezioni:

Re: Riquadro tabella con celle multilineaInoltre, poiché Table Box sembra avere un'altezza fissa per ogni riga, potrebbe essere utile avvolgere Text Box() con Scroll Box() (questo renderà la colonna un po' più ampia se viene visualizzata la casella di scorrimento)
Names Default To Here(1);
tb = Table Box(
nceb = Number Col Edit Box("Order", []),
scb1 = String Col Box("103width", {}),
cb = Col Box("longstring", {}),
scb2 = String Col Box("104width", {}),
);
nceb << Set Width(40);
scb1 << Set Width(103);
scb2 << Set Width(104);
New window("",
tb
);
textb = Scroll Box(Size(175, 35),
Text Box("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", << Set Wrap(150))
, <<SET auto="" stretching=""></SET>