4 pièce(s) jointe(s)
Ouvrir Excel dans un panel
Bonjour à tous,
Voila je me heurte à un problème que je n'arrive pas à résoudre, je suis en panne d'idées après deux jours de recherches.
J'en appelle donc à vos lumières.
Voila ma problématique, je voudrais ouvrir un fichier Excel dans un panel de ma fiche de manière à ce que l'utilisateur puisse modifier son fichier Excel. Au dessus du panel, je vais avoir des boutons d'action pour ajouter des éléments (articles, ...).
J'arrive à placer Excel dans le panel en faisant le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11
| Var FoleExcel : variant;
procedure TForm1.Button1Click(Sender: TObject);
begin
FoleExcel := CreateOleObject('Excel.Application');
FoleExcel.visible := true;
FoleExcel.WorkBooks.Open('c:\xls\test.xls');
Winapi.Windows.SetParent(FoleExcel.hwnd, Panel1.Handle);
MoveWindow(FoleExcel.hwnd, 0, 0, Panel1.Width, Panel1.Height, True);
end; |
Maintenant je veux faire un truc tout bête c'est activer la seconde feuille du fichier Excel (en vrai ce n'est pas ce que je veux vraiment faire, mais ça permet de mettre en lumière le souci).
Pour cela, j'ai un bouton avec un événement clic dessus :
Code:
1 2 3 4
| procedure TForm1.Button2Click(Sender: TObject);
begin
FoleExcel.Worksheets.item[2].Activate;
end; |
A ce moment là le programme ne plante pas et Excel change bien la feuille.
Par contre si je clique à nouveau sur le bouton en demandant de se repositionner sur la feuille 2, cela plante.
Il faut que je clique sur la grille Excel en allant sur une cellule pour que l'action remarche.
Si on regarde bien le caption de Excel, on voit bien que quelque chose ne va pas.
Image 1 : Ouverture du fichier Excel dans le panel
Pièce jointe 486247
Image 2 : Changement de feuille
Pièce jointe 486250
Image 3 : Changement de feuille à nouveau et erreur
Pièce jointe 486252
Si on regarde bien après le changement de feuille la barre de titre de Excel a changé. C'est passé de "test.xls - Mode de compatibilité - Excel" à "Excel".
C'est comme si Excel avait perdu le fil. Si on clique dans un cellule le titre se repositionne comme il faut.
Image 4 : Clic dans une cellule, la barre de titre change
Pièce jointe 486258
J'ai essayé en ajoutant des choses comme :
FAppThreadID := GetWindowThreadProcessId(FoleExcel.hwnd, nil);
AttachThreadInput(GetCurrentThreadId, FAppThreadID, True);
Mais rien n'y fait. Si vous avez une idée, je suis preneur car là je sèche complètement
Si on ne place pas Excel dans le panel. Aucune erreur se produit et on peut cliquer sur le bouton de changement de feuille sans souci (la barre de titre est bien mise à jour).
Pour info, je travaille avec la version 10.1 Berlin
Merci à tous pour votre aide