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
|
void __fastcall TfListView::bLireClick(TObject *Sender)
{
TStringList *slDonnees= new TStringList;
AnsiString asNomFichier;
if(!OpenDialog1->Execute()) return;
asNomFichier = OpenDialog1->FileName;
slDonnees->LoadFromFile(asNomFichier);
CreerListView(slDonnees);
slDonnees->Clear();
delete slDonnees;
}
//---------------------------------------------------------------------------
void TfListView::CreerListView(TStringList *slDonnees)
{
//
int iNbColonnes, iNbLignes, iPos;
AnsiString asNbColonnes, asNbLignes;
AnsiString asSeparateur =";";
AnsiString asLigne;
// Lecture des nombres de colonnes et de lignes
asLigne = slDonnees->Strings[0];
iPos = asLigne.Pos(asSeparateur);
asNbColonnes = asLigne.SubString(1, iPos - 1).Trim();
asLigne.Delete(1, iPos);
asNbLignes = asLigne;
iNbColonnes = StrToInt(asNbColonnes);
iNbLignes = StrToInt(asNbLignes);
// Création de la ListView
// Effacement de la ListView précédente, si besoin
lvDonnees->Columns->Clear();
lvDonnees->ViewStyle = vsReport;
TListColumn *NlleColonne;
asLigne = asLigne = slDonnees->Strings[1];
for (int iCol = 0; iCol < iNbColonnes ; iCol++ )
{
AnsiString asColonne;
iPos = iPos = asLigne.Pos(asSeparateur);
if(iPos > 0)
{
asColonne = asLigne.SubString(1, iPos - 1);
asLigne.Delete(1, iPos);
}
else asColonne = asLigne;
NlleColonne = lvDonnees->Columns->Add();
NlleColonne->Caption = asColonne;
}
// Remplir les lignes
TListItem *ListItem;
for(int iLigne = 0; iLigne < iNbLignes; iLigne++)
{
ListItem = lvDonnees->Items->Add();
asLigne = slDonnees->Strings[2 + iLigne];
AnsiString asCaption;
iPos = asLigne.Pos(asSeparateur);
asCaption = asLigne.SubString(1, iPos - 1);
asLigne.Delete(1, iPos);
ListItem->Caption = asCaption;
for(int iCol = 1; iCol < iNbColonnes; iCol++)
{
iPos = asLigne.Pos(asSeparateur);
AnsiString asLibelle;
if(iPos > 0)
{
asLibelle = asLigne.SubString(1, iPos - 1);
asLigne.Delete(1, iPos);
}
else asLibelle = asLigne;
ListItem->SubItems->Add(asLibelle);
}
}
}
//--------------------------------------------------------------------------- |
Partager