1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| //---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
// Variants declares en public
Variant vMSExcel, vXLWorkbooks, vXLWorkbook, vWorksheet, vLigne;
Variant vFileName, vUsedRange, vLines, vShapeRange, vSelection;
Variant vCell, XX, YY, X, Y, X1, Y1, fin_boucle;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
vMSExcel = Variant::CreateObject("Excel.Application");
vMSExcel.OlePropertySet("Visible", true);
// si on n'ouvre pas de fichier utiliser les deux lignes suivantes
//vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
//vXLWorkbook = vXLWorkbooks.OleFunction("Add");
// si on ouvre un fichier on utilise les trois lignes suivantes
vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\plan_gps\\PLAN_GPS\\dessin_releve_GPS_essai.xls";
vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName);
///////////
// essai d'utilisation des fonctions de dessin mono-traits multi-points
// msoEditingAuto = 0, msoSegmentLine = 0
// on selectionne la Feuille coordonnees
vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", "COORDONNEES");
// on calcul le nombre de lignes utilisees de la Feuille coordonnees
vUsedRange = vWorksheet.OlePropertyGet("UsedRange");
vLines = vUsedRange.OlePropertyGet("Rows");
int ii = vLines.OlePropertyGet("Count");
// on recupere les valeurs de depart
vCell = vWorksheet.OlePropertyGet("Cells", 3, 1);
XX = vCell.OlePropertyGet("Value");
vCell = vWorksheet.OlePropertyGet("Cells", 3, 2);
YY = vCell.OlePropertyGet("Value");
// on selectionne la Feuille circuit2
vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", "CIRCUIT2");
// hors boucle d'affichage on donne les coordonnees de depart
vLigne = vWorksheet.OlePropertyGet("Shapes").OleFunction("BuildFreeform", 0, XX, YY);
// on passe par boucle les coordonnees de la courbe
for (int i = 4; i <= (ii - 1); i++)
{ // debut for i
vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", "COORDONNEES");
vCell = vWorksheet.OlePropertyGet("Cells", i, 1);
X = vCell.OlePropertyGet("Value");
vCell = vWorksheet.OlePropertyGet("Cells", i, 2);
Y = vCell.OlePropertyGet("Value");
vCell = vWorksheet.OlePropertyGet("Cells", i + 1, 1);
X1 = vCell.OlePropertyGet("Value");
vCell = vWorksheet.OlePropertyGet("Cells", i + 1, 2);
Y1 = vCell.OlePropertyGet("Value");
// dans la boucle on donne le cordonnees des segments que l'on va tracer
vLigne.OleProcedure("AddNodes", 0, 0, X, Y);
vLigne.OleProcedure("AddNodes", 0, 0, X1, Y1);
// apres avoir ferme la boucle on trace la ligne
} // fin for i
vLigne.OleFunction("ConvertToShape");
// on selectionne la feuille circuit2
vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", "CIRCUIT2");
vWorksheet.OleProcedure("Select");
// on selectionne le trace
vWorksheet.OlePropertyGet("Shapes").OleFunction("SelectAll");
// on change l'epaisseur
vMSExcel.OlePropertyGet("Selection").OlePropertyGet("ShapeRange").OlePropertyGet("Line").OlePropertySet("Weight", 8);
// on change la couleur
vMSExcel.OlePropertyGet("Selection").OlePropertyGet("ShapeRange").OlePropertyGet("Line").OlePropertyGet("ForeColor").OlePropertySet("SchemeColor", 22);
// on le rend visible ou invisible
vMSExcel.OlePropertyGet("Selection").OlePropertyGet("ShapeRange").OlePropertyGet("Line").OlePropertySet("Visible", false);
vMSExcel.OlePropertyGet("Selection").OlePropertyGet("ShapeRange").OlePropertyGet("Line").OlePropertySet("Visible", true);
}
//--------------------------------------------------------------------------- |
Partager