2010-01-22 27 views
3

J'utilise Delphi 7 et Rave Reports. Comment puis-je définir la propriété DataText.Left (à partir des rapports Rave) de manière dynamique en fonction de la taille d'un autre DataText précédent? J'ai essayé d'utiliser la largeur du DataText précédent, la longueur du champ que le premier DataText affiche ... Aucun d'eux n'a fonctionné. J'apprécierais vraiment si quelqu'un pouvait me donner des idées.Rave Reports DataText Left

Merci

Répondre

0

La longueur ne prend pas la largeur des caractères en compte, qui varie en fonction des paramètres de police.

// Assumes the AutoSize property is true. 
// Note: 8 is added as spacing 
DataText.Left := LastDataText.Left + LastDataText.Width + 8; 

Si le chargement des données à partir d'un DataSet, jetez un oeil à la propriété DisplayWidth de la classe TField.

// calculate the width of the last field. 
TextWidth := DataSet.Fields[0].DisplayWidth * QuickReport.Canvas.TextWidth('M'); 
DataText.Left := LastDataText.Left + TextWidth; 
+0

Je ne l'ai pas testé le code ci-dessus. Je dois vérifier le * QuickReport.Canvas * est correct. – stukelly

0

Alternativement, selon l'effet exact dont vous avez besoin, vous pouvez également utiliser un seul champs DataText, et concaténer des données statiques/texte comme celui-ci:

<FieldName> + ' Some text ' + <Param.ParamName> + ' Some other text'