Champ Table et texte multi ligne
DSI WDF
Inscrit:
02/11/2005 22:47
Post(s): 215
bonjour
j'ai une table avec Date, Nom, Résumé
Résumé est en multiligne (champs mémo)
le soucis, c'est que lorsqu'il y a beaucoup de texte, ma hauteur de ligne s'aggrandit et du coup, je vois moins d'info dans ma table.
comment faire pour pouvoir afficher 1 seule ligne et mettre un '+' qui lors d'un clique, aggrandirait la cellule de la table ?

merci

Contribution le : 20/07/2006 16:00
Créer un fichier PDF de la contribution Imprimer


Re: Champ Table et texte multi ligne
Animateur WDF
Inscrit:
22/11/2004 11:23
Post(s): 255
Bonjour,

Voici un petit bout de code à placer lorsque l'utilisateur clique droit sur une ligne de la table :

hauteurDepliee est un entier = 70
hauteurRepliee est un entier = 20


SI Table1[TableSelect(MoiMême)]..Hauteur = hauteurDepliee ALORS
  Table1[TableSelect(MoiMême)]..Hauteur = hauteurRepliee
SINON
  Table1[TableSelect(MoiMême)]..Hauteur = hauteurDepliee
FIN


Le code ci-dessus a été testé a été testé

Cordialement

Contribution le : 20/07/2006 17:18
Créer un fichier PDF de la contribution Imprimer


Re: Champ Table et texte multi ligne
DSI WDF
Inscrit:
02/11/2005 22:47
Post(s): 215
Bonsoir,
pas mal mais si le texte de la cellule est grand, il ne s'affiche pas tout.
j'ai donc créer une fenetre Popup qui m'affiche l'ensemble de la cellule que je passe en parametre.

Merci et bonne soirée

Contribution le : 20/07/2006 23:21
Créer un fichier PDF de la contribution Imprimer


Re: Champ Table et texte multi ligne
Animateur WDF
Inscrit:
02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
Bonjour,

En analysant un peu les evenements de Windows on peu arriver à simuler une pseudo bulle lorsque cela est nécessaire.

pour commencer on branche deux événements
Evénement("SurvolTable","TABLE",160)
Evénement("SurvolObjet","frmtest.*",512)

Le premier '160' est déclenché sur le survol des libellées des colonnes
le second '512' pour détecter le sortie des entêtes de colonnes.

on créer un libellé avec look bulle que l'on paramètre en non visible(ici txtBulle)
La table s'appel 'TABLE'

premier événement branché sur la fonction SurvolTable
PROCEDURE SurvolTable(pMessage, wParam, lParam)

x est un entier
y est un entier
nCol est un entier
Ind est un entier
sCol est une chaîne
nPosXEcran est un entier
nPosYEcran est un entier
nTailleTexteEnPixel est un entier

nPosXEcran = PoidsFaible(CurseurPos(cpClient))
nPosYEcran = PoidsFort(CurseurPos(cpClient))

x = nPosXEcran - TABLE..X
y = nPosYEcran - TABLE..Y

POUR Ind = 1 A TableOccurrence(TABLE,toColonne)  //On parcours les colonnes de la table
	sCol = TableEnumèreColonne(TABLE,Ind)          //On récupère le nom de la colonne selon son indice
	//si la position x de la souris se situe dans les entête de colonne
	SI x >=  {sCol,indChamp}..X	 ET x <= ({sCol,indChamp}..X + {sCol,indChamp}..Largeur) ALORS
		//On récupère la taille approximative du texte vaudrait mieux voir l'api 'GetTextMetrics'
		nTailleTexteEnPixel = TexteLargeur(txtBulle,{sCol,indChamp}..Libellé)
		//Si le texte plus grand que la colonne on rend le libellé visible
		SI nTailleTexteEnPixel*1.1 < {sCol,indChamp}..Largeur ALORS
			txtBulle..Visible = Faux
		SINON
			txtBulle..Visible = Vrai	
		FIN
		//On renseigne valeurs et position de la pseudo bulle
		txtBulle = {sCol,indChamp}..Libellé
		txtBulle..X = x + TABLE..X
		txtBulle..Y = y + TABLE..Y
		txtBulle..Largeur = nTailleTexteEnPixel*1.1
		FenRepeint(frmTest)
		RETOUR
	FIN
FIN


le deuxieme événement permet de rendre le libellé invisible si on est sorti des entêtes de colonne de la table
PROCEDURE SurvolObjet( pMessage, wParam, lParam )
x est un entier
y est un entier
nPosXEcran est un entier
nPosYEcran est un entier
bVisible est un booléen = Faux

nPosXEcran = PoidsFaible(CurseurPos(cpClient))
nPosYEcran = PoidsFort(CurseurPos(cpClient))
x = nPosXEcran - TABLE..X
y = nPosYEcran - TABLE..Y

//On teste si on est sorti des entêtes de colonne de la table
SI nPosYEcran >= TABLE..Y ALORS
	SI nPosYEcran <= TABLE..Y + TABLE..HauteurLigne ALORS
		SI nPosXEcran >= TABLE..X ALORS
			SI nPosXEcran <= TABLE..X + TABLE..Largeur ALORS
				RETOUR			 
			FIN
		FIN
	FIN
FIN
txtBulle..Visible = Faux


Ceci est un code simpliste et serait plus propre et surtout plus portable si cela état intégrée dans une classe ou on aurait plus qu'a lui passer en paramètre le nom du libellé pseudo bulle et le nom de la table.

Contribution le : 21/07/2006 18:32
_________________
@A+
Contact (privé)......
email : drcharly@wdforge.org
[DrCharly93]
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2