|
Redimension et Synchro de la largeur d'une colonne. |
Débuté par Michel Lahellec, 03 nov. 2004 19:01 - 4 réponses |
| |
| | | |
|
| |
Posté le 03 novembre 2004 - 19:01 |
Mon appli demande de maintenir deux tables équivalentes visuellement.
J'arrive (grace à l'aide de ce groupe) à synchroniser l'ascenceur horizontal. POur la taille des colonnes, n'ayant pas trouvé une solution pure API, je viens capturer l'événement Resize d'une colonne avec le code: Evénement("MouvementColonne","Table_TBL_Dona",1743). Cela fonctionne bien.Au niveau de ma table: le code de la fonction:
FONCTION MouvementColonne(Message, wParam, lParam)
Table_TBL_Dona1[1][lParam+1]..Largeur=Table_TBL_Dona[1][lParam+1]..Largeur
Le problème, c'est que lorsque on effectue un tri, et qu'on se positionne sur les dernières lignes de la table, le code plante abvec le message:
Erreur à la ligne 3 du traitement Procédure locale MouvementColonne. L'indice spécifié [1] est invalide. Table_TBL_Dona utilise un fichier ou une requête comme source de données. Seuls les éléments visibles sont disponibles en programmation.
Merci du coup de main. Michel |
| |
| |
| | | |
|
| | |
| |
Posté le 04 novembre 2004 - 11:49 |
Je fais quelquechose d'un peu similaire, mais avec la "visibilité" des colonnes: Dans l'initialisation d'une table, j'ai le code suivant:
NumeroColonne est un entier NomColonne est une chaîne
POUR NumeroColonne = 1 A MoiMême..NombreColonne NomColonne = TableEnumèreColonne(MoiMême,NumeroColonne) SI ChampExiste("tableproduits." + NomColonne) ALORS {MoiMême..Nom + "." + NomColonne}..Visible = {"tableproduits." + NomColonne}..Visible FIN FIN
Donc dans ton cas, je pense que tu peux faire:
NumeroColonne est un entier NomColonne est une chaîne
POUR NumeroColonne = 1 A Table_TBL_Dona..NombreColonne NomColonne = TableEnumèreColonne(Table_TBL_Dona,NumeroColonne) {"Table_TBL_Dona1." + NomColonne}..largeur = {"Table_TBL_Dona." + NomColonne}..Largeur FIN
Frédéric. |
| |
| |
| | | |
|
| | |
| |
Posté le 05 novembre 2004 - 01:05 |
Merci de la proposition de code... Cela fonctionne. RÉFLEXIONS PERSONELLES. IL y a deux problèmes sur l'objet Table.
1-si on utilise une technique à base de :MaTable[1][N° de colonne]..Largeur, il faut que la ligne 1 soit active, ou visible, sinon cela plante. 2-Si on utilise une technique de code avec MaTable(Table_TBL_Dona, tiNumLigne + tiOrigineEcran, x, y), pour récupérer le n° de ligne, si l'usager commence à faire des redimentionnement en fin de table, là où il n'y a plus de données, il n'y a plus non plus d'info colonne ni lignes. Dans ce cas, votre cote, très systématique fonctionne.
N.B. Je débute en Windev, venant de VB. Il me semble qu'il manque une propriété NumLigneActive... Peut-être existe t'elle? Ceci étant, j'ai beaucoup de plaisir avec Windev, je trouve les interfaces plus "sexy", si on peut dire. |
| |
| |
| | | |
|
| | |
| |
Posté le 05 novembre 2004 - 10:06 |
Salut !
On 5-Nov-2004, "Michel Lahellec" <kerloic.armor@sympatico.ca> wrote:
Merci de la proposition de code... Cela fonctionne. RÉFLEXIONS PERSONELLES. IL y a deux problèmes sur l'objet Table.
1-si on utilise une technique à base de :MaTable[1][N° de colonne]..Largeur, il faut que la ligne 1 soit active, ou visible, sinon cela plante. 2-Si on utilise une technique de code avec MaTable(Table_TBL_Dona, tiNumLigne + tiOrigineEcran, x, y), pour récupérer le n° de ligne, si l'usager commence à faire des redimentionnement en fin de table, là où il n'y a plus de données, il n'y a plus non plus d'info colonne ni lignes. Dans ce cas, votre cote, très systématique fonctionne.
N.B. Je débute en Windev, venant de VB. Il me semble qu'il manque une propriété NumLigneActive... Peut-être existe t'elle? Ceci étant, j'ai beaucoup de plaisir avec Windev, je trouve les interfaces plus "sexy", si on peut dire.
Elle est implicite ... C'est la valeur par défaut retournée par MaTable. Si la ligne active de la Table "MaTable" est 3, MaTable renvoie 3 ... MaTable[MaTable,1] renvoie le contenu de la première colonne de la ligne active
Bien à toi !
-- Marcel Berman c/o Managing Business SPRL Allée du Petit Paris, 11 B - 1410 - Waterloo Tel : +32 2 351.60.64 Fax : +32 2 351.45.78 Gsm : +32 475.799.477 |
| |
| |
| | | |
|
| | |
| |
Posté le 05 novembre 2004 - 15:49 |
Merci du code. Oui, effectivement la premiere valeur retournée est le n° de ligne. Cependant le problème reste le même avec les fins de tables, là où les lignes sont vides. On ne peut y entrer, donc on ne récupère pas de n° de ligne, par contre on peut les redimentionner, et du coup, pour récupérer la ligne active, cela coince.
Il ne faudrait pas que la table ramène des lignes vides.
Je vais essayer d'écrire un résumé de tous ces détails (que je récupère sur ce forum ) sur l'objet Table, parce que vraiment, il manque de documentation claire sur le sujet. Bonne journée |
| |
| |
| | | |
|
| | | | |
| | |
|