Chers tous,

j'ai une application qui affiche une grille de donn�es en lecture seule (le sql est cr�� dynamiquement par le code, avec des filtres selon les �crans).
Le titre de chaque colonne est d�termin� lors de l'ex�cution selon la langue de l'utilisateur. Certaines colonnes sont cach�es.

Dans l'�v�nement AfterOpen de la requ�te, j'ai mis:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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
void __fastcall TFStock::QDictAfterOpen(TDataSet *DataSet)
{
//Title Grid Captions
int i;
for (i=0;i<DBGridDict->Columns->Count;i++)
    DBGridDict->Columns->Items[i]->MinWidth=0;
i=0;
DBGridDict->Columns->Items[i++]->Width=0;
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_DATE");
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_PRODUCT");
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_REFERENCE");
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_VERSION");
// cacher une colonne
DBGridDict->Columns->Items[i]->Width=0;
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_ORIGIN");
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_QUANTITY");
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_QUANTITY");
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_DESTINATION");
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_QUANTITY");
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_TRIGRAM");
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_UNITPRICE");
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_CURRENCY");
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_UNITPRICEEURO");
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_TOTALPRICEEURO");
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_REASON");
DBGridDict->Columns->Items[i++]->Title->Caption=GDB->getCaption("CMSG_SUBREASON");
}
La m�thode GDB->getCaption renvoie un texte dans la langue de l'utilisateur.
Ca fonctionne, mais j'ai n�anmoins un souci:
si l'utilisateur permute des colonnes dans la grille au run-time, ca marche sauf que lors d'un refresh (query->Close() puis query->Open()), les libell�s et largeurs sont remis par rapport dans l'ordre de la grille et pas du select.
On a donc
* un titre qui ne correspond pas avec le contenu de la colonne
* les libell�s ne sont pas permut�s,
* ce n'est plus la bonne colonne qui est cach�e.

=> Y a-t'il moyen de faire en sorte que
1. la grille conserve l'ordre des colonnes et des libell�s lors d'un "refresh" de la requ�te?
2. la grille conserve la largeur des colonnes lors d'un "refresh" de la requ�te?
3. je suppose que je ne devrai plus affecter ces libell�s(valeurs + longueurs) lors de l'ouverture de la requ�te. A quel �v�nement dois-je l'associer dans ce cas.

Merci.


Merci,
Alain