- printerframework_src.zip
- Devp
- Bin
- Printer.dll
- Test.exe
- Include
- Lib
- Sources
- Printer
- Doc
- AccentCesure.sty
- html
- Image
- ArchitectureMFC.png
- MFC.png
- PreviewRefactor.png
- PrinterPath.png
- PrintMfc.png
- PrintRefactor.png
- UMLPrinter.png
- IntroPrinter.doc
- Licence
- MAKEDOC.BAT
- MAKEPDF.BAT
- MAKEPS.BAT
- manual.pdf
- printer.dox
- printer.log
- printer.tag
- Readme.txt
- Sources
- Test
|
/*!
*********************************************************************
* \file : TextTable.h
*
* \b Package : dll Printer
*
* \b Author : T. Montembault
*
* \b Date : 03/04/02
*
* \b Objet : Une table
*
*********************************************************************
* \par Version History:
*
* @li V 0.10 03.04.02 Cr�ation
*
*********************************************************************
*
*/
#ifndef AFX_TEXTTABLE_H__4FD5F1D3_D230_4FA1_915F_8FB001E4E086__INCLUDED_
#define AFX_TEXTTABLE_H__4FD5F1D3_D230_4FA1_915F_8FB001E4E086__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "ExportPrinter.h"
#include <vector>
#include "FormatString.h"
#include "InterfaceElement.h"
namespace printer {
//! La repr�sentation d'un tableau de donn�e
/*! La classe permet d'int�grer facilement un tableau d'�l�ments
dans le CDocText. La classe est con�ue pour �tre ind�pendante
de CListCtrl (Une classe adaptateur CTextList est fournie).
Il faut fournir au constructeur le nombre de colonnes de la table.
Ensuite SetColumn et SetSize servent � positionner le titre. Pour
ajouter une ligne, la m�thode AddLine utilise un CStringArray.
Chaque �l�ment correspond � une colonne de la table.
La table utilise un tableau de CFormatString. Ces derniers
permettent � un �l�ment de s'afficher - si n�cessaire - sur
plusieurs lignes du contexte d'impression. Evidemment, les autres
�l�ments de la ligne s'aligneront sur cette place prise afin
d'�viter un d�calage.
Le code utilise un seul tableau de CFormatString pour tous les
�l�ments de la liste. On �vite ainsi la cr�ation d'un grand
nombre (nbre de lignes * nbre de colonnes) de petits objets. En
contrepartie, cela am�ne � des calculs subtils sur les indices
et les d�calages de lignes...
Avec CTextFreeLine c'est un �l�ment un peu particulier, puisque
l'utilisateur doit y acc�der directement pour d�finir le nombre
de colonnes, les titres et les lignes.
Pour �viter les probl�mes de fuite m�moire, la classe d�clare
priv� les constructeurs, le destructeur et l'op�rateur de copie.
Par le design de la classe, on impose une utilisation stricte :
- Cr�ation de l'objet dans l'ar�ne par un appel � la fabrication
CPrintText::CreateTable
- Initialisation gr�ce aux m�thodes SetColumn, AddLine et SetSize
- Ajout au document et supression de l'objet de l'ar�ne par un
appel � CPrintText::AddTable
.
*/
class _PRINTER_DLLAPI CTextTable : public CInterfaceElement
{
friend class CPrinterText; /*!< Pour autoriser la cr�ation et la supression !! */
friend class CTextList; /*!< Pour autoriser la cr�ation et la supression !! */
public:
/*! \par Objet :
D�finition d'une colonne
\param nColum : Le num�ro de la colonne
\param nSize : La taille de la colonne exprim�e en nombre de caract�res.
\param bStyle : L'alignement � droite, centr� ou � gauche. pour l'instant
SANS SIGNIFICATION.
\param cszTitle : Le titre de la colonne. Il doit tenir sur une ligne.
*/
void SetColumn(int nColum, int nSize, byte bStyle, LPCTSTR cszTitle);
/*! \par Objet :
D�finition de la taille d'une colonne
\param nColum : Le num�ro de la colonne
\param nSize : La taille de la colonne exprim�e en nombre de caract�res.
*/
void SetSize(int nColum, int nSize);
/*! \par Objet :
Ajout d'une ligne.
\param array : Un tableau de CString. Il doit avoir le m�me nombre d'�l�ments
que le nombre de colonnes de la table.
*/
void AddLine( const CStringArray& array );
//@{
/*! \name Interface
//
// Les m�thodes suivantes constituent l'interface des �l�ments de texte.
//*/
/*! \par Objet :
Initialisation de l'�l�ment en fonction du contexte d'impression.
En particulier la m�thode peut d�couper l'�l�ment en plusieurs
sous-�l�ments (un pour chaque ligne).
\param pDC : Un pointeur sur le contexte
\param pData : Un pointeur sur la structure de param�trage de l'impression
*/
virtual void Initialize(CDC* pDC, SDataPrint* pData);
/*! \par Objet :
Accesseur.
\return Le nombre de lignes occup�es par l'�l�ment.
*/
virtual int GetNbLignes();
/*! \par Objet :
Affichage d'une ligne particuli�re de l'�l�ment.
\param nSubElt : Le num�ro du sous-�l�ment � afficher
\param nLine : Le num�ro de la ligne de sortie sur le contexte.
\param pDC : Un pointeur sur le contexte
\param pData : Un pointeur sur la structure de param�trage de l'impression
*/
virtual void Output(int nSubElt, int nLine, CDC* pDC, SDataPrint* pData);
//@}
private:
//@{
/*! \name Design de conception
//
// Les m�thodes suivantes sont d�clar�s priv�es afin
// d'interdire leur utilisation directe. En coordination avec
// CArena et CPrinterText on s'assure que le l'utilisateur ne
// peut pas construire ou d�truire directement un CTextTable.
//*/
/*! \par Objet :
Le constructeur
\param nColumns : Le nombre de colonnes de la table.
*/
CTextTable(int nColumns);
/*! \par Objet :
Le destructeur
*/
virtual ~CTextTable();
/*! \par Objet :
Le constructeur de copie. Non impl�menter.
*/
CTextTable(const CTextTable&);
/*! \par Objet :
Le constructeur de copie. Non impl�menter.
*/
CTextTable& operator=(const CTextTable&);
//@}
/*! \par Objet :
Calcul des abcisses de chaque colonne de la table
\param pDC : Un pointeur sur le contexte
\param pData : Un pointeur sur la structure d'impression
*/
void DefineAbcisses(CDC* pDC, SDataPrint* pData);
/*! \par Objet :
Calcul de la taille de chaque colonne et de la taille totale.
\param pData : Un pointeur sur la structure d'impression
\param listSize : Une r�f�rence sur un tableau qui
contient les tailles ajust�e en retour
\param nSizeTable : Une r�f�rence sur un entier qui contient
la taille totale en retour.
\warning La m�thode est utilis�e par DefineAbcisses. Si le
coefficient multiplicateur est trop grand, les tailles sont
diminu�es jusq'� ce que la liste tienne dans la page...
*/
void JustifyTableSize(SDataPrint* pData, std::vector<int>& listSize, int& nSizeTable);
/*! \par Objet :
Affichage des titres de la tables
\param nLine : Le num�ro de la ligne de sortie sur le contexte d'impression.
\param pDC : Un pointeur sur le contexte
\param pData : Un pointeur sur la structure d'impression
*/
void OutputTitle(int nLine, CDC* pDC, SDataPrint* pData);
/*! \par Objet :
Affichage d'une ligne de la table
\param nSubElt : Le num�ro de la ligne � afficher
\param nLine : Le num�ro de la ligne de sortie sur le contexte.
\param pDC : Un pointeur sur le contexte d'impression
\param pData : Un pointeur sur la structure d'impression
*/
void OutputRows(int nSubElt, int nLine, CDC* pDC, SDataPrint* pData);
/*! \par Objet :
Affichage d'une ligne de la table
\param nSubElt : Le num�ro de la ligne � afficher
\param nSum : Le num�ro de la ligne de sortie sur le contexte d'impression.
*/
int GetBaseIndex(int nSubElt, int& nSum);
/*! La d�finition d'une colonne */
struct SHeaderAttributs {
byte bStyle; /*!<Le style*/
int nSize; /*!<La taille (en nombre de caract�res moyens) */
CString strTitle; /*!<Le titre*/
int cxAbcisse; /*!<La taille en nombre de point */
int nAbcisse; /*!<L'abcisse */
};
int m_nColumns; /*!< Le nombre de lignes */
int m_nLines; /*!< Le nombre de colonnes */
/*! \typedef ListOfAttributs
Une liste d'ent�tes
*/
typedef std::vector< SHeaderAttributs > ListOfAttributs;
ListOfAttributs m_listAttributs; /*!<La liste des Attributs*/
/*! \typedef ListOfItems
Une liste des items pour chaque ligne et chaque colonne
*/
typedef std::vector< CFormatString > ListOfItems;
ListOfItems m_listItems; /*!< La liste des items */
/*! \typedef ListOfInt
Une liste du nombre de lignes �crans occup�es par chaque item de la liste
*/
typedef std::vector< int > ListOfInt;
ListOfInt m_listNbSubItem; /*!< La liste des index*/
};
}
#endif // !defined(AFX_TEXTTABLE_H__4FD5F1D3_D230_4FA1_915F_8FB001E4E086__INCLUDED_)
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.