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:
La m�thode GDB->getCaption renvoie un texte dans la langue de l'utilisateur.
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"); }
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
Partager