Boîte de table avec cellules multilignesJe viens de remarquer un léger problème (un de plus dans la longue liste de problèmes) avec Table Box. J'essaie d'ajouter une chaîne assez longue à Table Box et comme Table Box ne prend pas vraiment en charge plusieurs lignes, j'ai essayé d'utiliser Col Box avec Table Box(<< Set Wrap())... le problème avec ceci est qu'il semble casser tout le reste
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)});
));

On dirait que 103width est en cours d'enroulement et que seule la deuxième ligne est affichée.
Quelqu'un a-t-il de bonnes idées sur la façon dont je pourrais gérer cela ? Ces trois me viennent rapidement à l’esprit :
- Dois-je utiliser uniquement les zones de colonnes avec les zones de texte et accepter simplement que je ne peux pas laisser les utilisateurs sélectionner des lignes dans la zone de tableau aussi facilement que je le souhaiterais ?
- Dois-je écrire ma classe personnalisée pour le nouvel élément de boîte d'affichage (comme pour abandonner les boîtes de table)
- Créez des colonnes masquées avec du texte intégral, puis calculez la largeur maximale que je peux afficher dans les boîtes de colonnes de chaîne et affichez-les uniquement.
Personnalisation de masseles fenêtresRe : Table Box avec cellules multilignesDe plus, comme Table Box semble avoir une hauteur fixe pour chaque ligne, il peut être avantageux d'envelopper Text Box() avec Scroll Box() (cela rendra la colonne un peu plus large si la boîte de défilement apparaît)
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>Re : Table Box avec cellules multilignesJ'ai tendance à remplir les zones de tableau par colonnes, j'ai donc essayé ceci :
nceb << set({1});
scb1 << set({long_str});
scb2 << set({long_str});
wait(2);
cb << set(lstBoxes);
Mais le même problème s'est produit.La seule façon de le faire fonctionner était d'avoir également scb1 et une Col Box contenant des zones de texte.J'ai généralement eu recours à ce que la première colonne d'une zone de tableau contienne des boutons radio pour permettre les sélections :

Re : Table Box avec cellules multilignes@txnelson Les différences dans le premier cas pourraient être causées par des paramètres de police différents (ou peut-être même par des niveaux de zoom ?), car les largeurs sont définies en utilisant des pixels, à ma connaissance.
Le deuxième cas est un peu inquiétant, car il semble que les lignes se mélangent d'une manière ou d'une autre. Il est très probable que vous obteniez du texte d'une mauvaise ligne :

(modifié long_str = "11231231312312312312" ; pour la deuxième ligne).
Utiliser Col Box avec des zones de texte pourrait être la "seule" solution pour le moment. Dommage que vous ne puissiez pas cliquer et mettre en surbrillance les lignes en définissant simplement tb << Set Selectable Rows(1); lors de l'utilisation de boîtes de couleurs.
Re : Table Box avec cellules multilignesJ'ai exécuté votre script et j'ai obtenu des résultats différents.

et des résultats encore plus déroutants en ajoutant une deuxième ligne au tableau

Utiliser Col Box() avec des zones de texte intégrées semble aider
