Bordure des cellules de table 4D Write pro

Salut,

Après avoir ajouter une table, je souhaite jouer sur les bordures des cellules:
<code 4D>
$o_rows:=WP Table append row($WPTable;“a”;1;2;“c”)
WP SET ATTRIBUTES($o_rows;wk border style;wk none)
WP SET ATTRIBUTES($o_rows;wk border width;“2pt”)

$o_rows:=WP Table append row($WPTable;“z”;“a”;20;“c”)
WP SET ATTRIBUTES($o_rows;wk border style;wk hidden)
WP SET ATTRIBUTES($o_rows;wk border width;“5pt”)
</code 4D>

Pourtant wk none et wk hidden ne font rien : la bordure obtenue est “solid”

Je mets une demo pour ceux que ça inspire

http://forums.4d.com/4DBB_Main/x_User/3906/files/26355904.7z

Il faut passer par les attributs de cellules pour pouvoir supprimer toutes les bordures. Je pourrais envoyer une methode générique pour attribuer des couleurs bordures, padding etc., si cela vous intéresse.

De plus cette methode donne également les possibilités suivantes :

Ajouter des lignes (assez facile)
Supprimer des lignes
Ajouter des colonnes,
Supprimer des colonnes

Le tout se faisant en sélectionnant la colonne ou la ligne a supprimer dans une interface

: Francois CLOUTIER

Il faut passer par les attributs de cellules
C’est-à-dire travailler sur une cellule et pas sur la ligne complète ?

Bonjour,

Excusez ma réponse tardive, mais étant donné le décalage horaire et ma journée très occupée, je n’ai pas pu donner suite plus rapidement.

En effet, il faut travailler sur les cellules pour pouvoir masquer ou modifier les encadrements.

Voici un bout de code qui ne fonctionne pas

	C_OBJET($v_o_plage;$v_o_tableau;$v_o_rangee;$v_o_cellules)
	
	$v_o_plage:=WP Créer plage(zone_write;wk start text;wk end text)
	$v_o_tableau:=WP Insérer tableau($v_o_plage;wk replace;wk include in range;3;3)
	$v_o_rangee:=WP Tableau ajouter ligne($v_o_tableau;"";"";"")
	WP FIXER ATTRIBUTS($v_o_rangee;wk border style;wk dotted)

Voici le code qui fonctionne

	$v_o_plage:=WP Créer plage(zone_write;wk start text;wk end text)
	$v_o_tableau:=WP Insérer tableau($v_o_plage;wk replace;wk include in range;3;3)
	$v_o_rangee:=WP Tableau ajouter ligne($v_o_tableau;"";"";"")
	$v_o_cellules:=WP Tableau lire cellules($v_o_tableau;1;4;3;1)
	WP FIXER ATTRIBUTS($v_o_cellules;wk border style;wk dotted)

J’ai développé toute une interface qui permet d’effectuer des encadrements (bordures) en fonction d’une sélection de cellules par l’utilisateur final. J’ai été aidé d’ailleurs par un des membres de l’équipe de développement de 4D inc.

De plus, un autre défi est de pouvoir supprimer une rangée ou une colonne tout en conservant les attributs qui ont été fixés pendant l’élaboration du tableau. En effet, 4D ne nous donne aucune commande pour effectuer ce type de manipulation. La seule commande qui existe est Wp tableau ajouter ligne, qui ajoute une ligne à la fin du tableau. Mon interface permet d’effectuer ce genre de manipulation. Si cela vous intéresse, je peux vous envoyer le code.

Au plaisir

Voici d’ailleurs une capture d’écran de l’interface finale. Vous pouvez voir un peu ce que ça peut donner comme possibilité

[]26401760;“Your comment here…”[/]

: Francois CLOUTIER

je peux vous envoyer le code

Merci.

On peut aussi le mettre dans la zone de partage de code avec une base demo ou bien la méthode .c4d.

: Bertrand SOUBEYRAND
: Francois CLOUTIER

je peux vous envoyer le code
Merci.
On peut aussi le mettre dans la zone de partage de code avec une base
demo ou bien la méthode .c4d.
Moi aussi, François m’a mis l’eau à la bouche !

Bonjour,

J’ai déposé dans la section “Partage” une base qui illustre des fonctions de gestion des tableaux dans 4DWP.

Ce code et tiré d’une gestion plus importante de courriel HTML en lien avec un de nos produits. Il se peut qu’il y ait encore des bogues, car c’est un “work and progress”.

Cependant, l’essentiel est là.

La méthode centrale est la méthode wp_gestion_table.

Bonne fin de journée

http://forums.4d.com/4DBB_Main/x_User/1151271/files/26421123.zip

: Francois CLOUTIER

Bonjour,
De plus, un autre défi est de pouvoir supprimer une rangée ou une
colonne tout en conservant les attributs qui ont été fixés pendant
l’élaboration du tableau. En effet, 4D ne nous donne aucune commande
pour effectuer ce type de manipulation. La seule commande qui existe
est Wp tableau ajouter ligne, qui ajoute une ligne à la fin du
tableau.

Bonjour François,

4D Write Pro est loin d’avoir fini d’évoluer. La gestion des tables fait partie des évolutions prévues avec l’ajout / suppression des lignes, fusions des cellules, etc.

En ce moment, nous nous concentrons surtout sur ce pourrait bloquer certains utilisateurs pour migrer de 4D Write vers 4D Write Pro. Les tables n’existant pas dans 4D Write, elles seront donc traitées par la suite, mais cela ne devrait plus trop tarder !

Cordialement,

Roland

A partir de quel moment faut-il s’inquiéter et commencer à declarer des bugs sur la partie “tableau” dans 4D Write Pro ?

Testé en v18.0 build 18.249194

Pourquoi je ne peux pas faire un :

<code 4D>
WP FIXER ATTRIBUTS($Table;wk border style;wk none)

</code 4D>

La doc ne donne pas de limitation et indique que cet attribut est applicable aux tableaux qui à raison ?

bonjour

: Manuel PIQUET

Pourquoi je ne peux pas faire un :
WP FIXER ATTRIBUTS($Table;wk border style;wk none)

ah c’est facile ça :slight_smile:

Parce que les tables n’ont PAS de bordures…En fait, par défaut, ce sont les cellules qui en ont (si si…)

Essayez d’enlever les bordures (et éventuellement les fonds) des cellules et vous pourrez faire ce que vous voulez avec les tables (et les Rows)

Les priorités sont (par ordre décroissant) cellules - lignes - tables…Donc tout ce qui s’applique aux cellules est prioritaire, sachant toutefois que c’est malgré tout le plus fort qui gagne (ex : une table avec une bordure de “5pt” masquera la bordure d’une cellule de “3pt”)

HTH

Cordialement,
Roland Lannuzel

Pour supprimer toute bordure à mon tableau :

<code 4D>
C_OBJECT($element)
$element:=WP Get element by ID([BIBLIOTHEQUE_CONTRAT]WP;$T_id)

	$element:=WP Table get columns($element;1;$L_ColumnCount)
	WP SET ATTRIBUTES($element;wk border style;wk none)
	  //WP SET ATTRIBUTES($element;wk border width;"2px")
	  //WP SET ATTRIBUTES($element;wk border color;"grey")
	WP SET ATTRIBUTES($element;wk background color;wk transparent)

</code 4D>

Pardon, mais je ne comprends rien…:oops:

Pourquoi quand j’ajoute un tableau par programmation, les cellules possèdent par défaut des bordures ? ce qui du coup empêche de fixer directement des attributs à mon tableau…

Dans votre explication, je dois TOUJOURS m’assurer que chaque cellule ne contienne aucune bordure, pour ensuite pouvoir travailler sur mon tableau…

Si comme vous dites les bordures des tableaux sont en fait les bordures de cellules pourquoi je ne peux pas demander qu’un changement en lot soit fait sur chaque cellule qui constitue mon tableau :?:

Clairement il faut changer la doc qui n’explique pas du tout ce comportement pire elle nous induit en erreur… :frowning:

Si par defaut les cellules n’avaient pas de bordures, vos tableaux
ressembleraient a un simple rectangle…

Ci-dessous une table de 4x4…est-ce vraiment ce que vous souhaitez ?

[]34137660;“Your comment
here…”[/]

(sinon le mieux serait peut-être un dessin…)


: Manuel PIQUET

Si comme vous dites les bordures des tableaux sont en fait les
bordures de cellules pourquoi je ne peux pas demander qu’un
changement en lot soit fait sur chaque cellule qui constitue mon
tableau

Enlever toutes les bordures de toutes les cellules d’un tableau, ça se fait en deux lignes…

<code 4D>
// two lines to remove cell borders
$cells:=WP Table get cells($table;1;1;$table[wk column count];$table[wk row count])
WP SET ATTRIBUTES($cells;wk border style;wk none)
// and now update the table
WP SET ATTRIBUTES($table;wk border style;wk solid;wk border width;“2pt”;wk border color;“red”)

</code 4D>

RL

OK, je viens de comprendre que ce n’est pas ce que je veux.

Je suis à la recherche d’une commande de modification d’attribut en lot qui n’existe pas…

Une commande où l’on passe un tableau en parametre et qui modifie l’attribut pour chaque cellule qui constitue ce tableau.