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 :
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
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); } //........... } //---------------------------------------------------------------------------
Merci d'avance pour vos conseils �clair�s,
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; } }
@ +![]()
Partager