PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Lignes visibles d'une table liée à un fichier et occurrence
Lignes visibles d'une table liée à un fichier et occurrence
Iniciado por obtuli, mar., 22 2019 10:08 PM - 4 respostas
Membro registado
948 mensagems
Popularité : +11 (13 votes)
Publicado em março, 22 2019 - 10:08 PM
Bonjour,

Selon une valeur, j'essaie de coloriser une ligne d'une table liée à un fichier (payé= rien, en cours= rouge .....)

Si je fais :
pour i=1 _A_ table..occurrence
si table[i].COL_PAYEE = faux
la cellule = rouge
fin
fin

Le programme plante sur une erreur d'indice !

Occurrence renvoie le nombre d'enregistrement <> du nombre de lignes visibles.

Comment savoir combien de ligne sont visibles dans la table ?
Peut-on gérer le focus d'une ligne ?

Une autre idée ?

merci

OB

ps : c'est pas évident à expliquer :)
Membro registado
1.923 mensagems
Popularité : +53 (65 votes)
Publicado em março, 23 2019 - 10:02 AM
Bonjour,

Placez votre code dans l'événement Affichage d'une ligne de la table.

--
Bon dev,
Jean-Pierre
Mensagem modificada, março, 23 2019 - 10:03 AM
Membro registado
948 mensagems
Popularité : +11 (13 votes)
Publicado em março, 25 2019 - 10:16 AM
Bonjour jean-Pierre,

Merci pour ta réponse.
C'est bien ce que je fais, mais je dois mal comprendre le fonctionnement de cet événement.
Je pensais qu'une seule ligne à la fois était traitée par cet événement (la ligne qui devient visible dans la table).

Selon la taille de la fenêtre, le nombre de lignes visible dans le tableau varie (par exemple 40 lignes de visibles sur les 3000 que contient la table)..
J'ai ajouté une trace dans l’événement, quand je déplace l’ascenseur d'une seule ligne, il y a 40 lignes de trace ! (balayage de toutes des lignes visibles), un trace table.numerofacture renvoi bien les 40 numéro visibles.

Si clic gauche sur l'ascenseur il y a plusieurs valeurs qui s'affichent : dans mon exemple (1-41 / 3025 20190220)
1-40 = premier au 40 éme enregistrement visible (si je déplace de 10 lignes j'ai 10-50 ....)
3025 c'est le nombre de ligne dans la table et 20190220 la clé de parcours

Sur le coup, pour coloriser une ligne, je pense qu'à chaque événement je dois récupérer l'indice absolu concernée

mais à chaque déplacement de l'ascenseur id = selectplus renvoi 40 fois un seul et même indice (-1 à l'ouverture de la table)

Pour coloriser une ligne j'ai besoin de son indice, sinon table..couleurdefond=rouge rend la toute la table rouge
j'ai besoin de faire table[indice]..couleurdefond=rouge

C'est ce que j'ai compris .... mais que je n'arrive pas à traiter,

C'est pas très clair, mais mon but c'est qu'à chaque affichage d'une table reliée à un fichier, selon une condition colorer un ligne.
Quand je me déplace avec l'ascenseur, chaque nouvelle ligne affichée doit se coloriser si condition respectée.
(ça marche très bien pour l'événement "Sélection d'une ligne" où je peux récupérer l'indice sans problème).


Merci

OB
Membro registado
1.923 mensagems
Popularité : +53 (65 votes)
Publicado em março, 25 2019 - 10:43 AM
Bonjour,

Tu veux colorier la ligne ou la cellule ? Le texte ou le fond ?

Extrait de l'Aide en ligne :
Pour manipuler les cellules d'une table par programmation, il est nécessaire d'utiliser la syntaxe suivante :
<Nom de la colonne>[<Numéro de la ligne>]

Voir aussi "Programmation des champs Table fichier" : https://doc.pcsoft.fr/fr-FR/?1013147&1013147

Donc quelque chose comme (avec ou sans [MoiMême]) :
SI table.COL_PAYEE[MoiMême] = Faux
// Colorie la cellule
table.COL_PAYEE[MoiMême]..Couleur = rouge
// Colorie la ligne
table[MoiMême]..Couleur = rouge
FIN


--
Bon dev,
Jean-Pierre
Membro registado
948 mensagems
Popularité : +11 (13 votes)
Publicado em março, 25 2019 - 11:13 AM
Jean-Pierre,

Tout est ok, MERCI.

J'ai bien compris comment adresser une ligne ou une colonne dans une table, mais
c'est une mauvaise connaissance de ma part de Windev.
J'ignorais tout bêtement qu'on pouvait indiquer MoiMême comme indice.

Je pensais que partout dans mon champ table, moimême=table (MoiMême.colpayee ....) , Windev est plein de subtilité.

Si j'ai bien compris, MoiMême s'adapte à l'endroit où il est placé dans le code.

Je développe depuis longtemps avec Windev, un peu trop sur des acquis. Une bonne révision ou formation va s'imposer.

Encore merci pour ton aide.

OB