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,
@ +