Bonsoir,

Encore une p'tite question nocturne....

J'ajoute des TMenuItems au TMainMenu de ma form principale au moyen d'une fonction appell�e d'une DLL.
Celle ci lit les valeurs contenues ds une table pour ajouter les items et ajuste la propri�t� Enabled en fonction de valeurs ds cette meme table.

Tout va bien, jusqu'au 'OnClick()' des TMenuItems, qui ne g�n�rent aucune erreur mais ne donnent pas les r�ponses attendues.Seuls les premiers et derniers items r�pondent correctement, et les autres sont soit muets soit taquins.
A noter qu'avant insertion de ces nouveaux items, il existe d�ja 3 items 'fixes' (dont les 'OnClick()' sont cod�s 'en dur' ds la fiche principale donc ne posant pas de problemes).

Ci joint un bout de code de la DLL, l'action se situant ds ActionChargerMenu :
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 ActionChargerMenu(TMainMenu* AMenu, TTable* ATable)
{
//..................
 
TMenuItem *pItem; String TexteComplet, PremiereLettre;
for (int i = 7; i < ATable->Fields->Count; i ++)
{
PremiereLettre = ATable->Fields->Fields[i]->DisplayName.SubString(1,1);
TexteComplet = (ATable->Fields->Fields[i]->DisplayName.LowerCase()).Delete(1,1);
        pItem = new TMenuItem(AMenu);
        pItem->Name = "Menu" + IntToStr(i);
        pItem->Caption = TexteComplet.Insert(PremiereLettre,1);
        pItem->Tag = i;
        pItem->Enabled = ATable->Fields->Fields[i]->AsBoolean;
        pItem->OnClick = frmReponseInterfac->ActionReponseMenu->OnExecute;
        AMenu->Items->Insert(i - 6, pItem);
 
}
 
//...........
 
}
//---------------------------------------------------------------------------
Pour la 'r�ponse' au click, j'esp�rait utiliser betement un truc comme :
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
 
void __fastcall TfrmReponseInterfac::ActionReponseMenuExecute(
      TObject *Sender)
{
TMenuItem* pItem = dynamic_cast < TMenuItem * > (Sender);
 
switch ( pItem->Tag )
{
        case 7:
       //.........
        break;
        case 8:
        //...........
                ShellExecute(Handle, "open", "Ventes.exe", NULL, NULL, SW_SHOW);
        break;
        default:
        //..............
        break;
}
 
}
Merci d'avance pour vos conseils �clair�s,
@ +