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 :
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Pour cela, j'ai un bouton avec un événement clic dessus :
A ce moment là le programme ne plante pas et Excel change bien la feuille.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procedure TForm1.Button2Click(Sender: TObject); begin FoleExcel.Worksheets.item[2].Activate; end;
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
Image 2 : Changement de feuille
Image 3 : Changement de feuille à nouveau et erreur
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
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
Partager