Bjr

je développe une application (Borland C++ 6) qui possède des composants maison dont l'un dérive de TDBGrid. Ce composant possède une fonction AjusterColonne qui permet de calculer la largeur idéale des colonnes par rapport au contenu.

Si j'appelle cette méthode immédiatement après avoir construit les colonnes ça marche sur XP, 2000 et même Seven. En revanche sur Vista les colonnes sont dimensionnées avec des tailles délirantes (plusieurs milliers de pixels).

Il est possible que la méthode AjusterColonne soit en cause mais je ne m'explique pas que son imperfection se manifeste uniquement avec Vista. De plus si on utilise la fonction AjusterColonne "longtemps" après la construction des colonnes, même sous Vista tout va bien.

Je me demande donc si l'allocation de ressources du TDBGrid (Column.add()) ne serait pas retardée sous Vista ?

Construction des colonnes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
for (int i=0;i<ds->Fields->Count;i++) {
                if(!ds->Fields->Fields[i]->Visible)
                        continue;
                TColumn *col = dbg->Columns->Add();
                col->Field=ds->Fields->Fields[i];
                col->FieldName=ds->Fields->Fields[i]->FieldName;
                col->Title->Caption=col->Field->DisplayLabel;
                col->Width=dbg->Canvas->TextWidth(col->Title->Caption);
                }