Bonjour,
j'utilise C++ Builder 11, et j'aurais voulu mettre en place un drag and Drop d'un fichier excel vers mon programme, pour ensuite faire un tri en fonction de certains paramètres.
Dans ma Form, j'ai mi en place un TDrawGrid, et j'utilise DragDrop et DragOver. J'ai placé un ApplicationEvent au niveau du TDrawGrid lié à la focntion EventMessage.
Mon problème pour le moment c'est d'afficher le contenu du fichier excel dans ce TDrawGrid, car le drag/drop semble fonctionner, mais rien ne s'affiche.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg, bool &Handled)
{
		 wchar_t Filename(512);
 
		 if (Msg.message == WM_DROPFILES)
		  {
			// Trouver nbr de fichiers
			int NbrFichier = DragQueryFile((HDROP)Msg.wParam, 0xFFFFFFFFF, NULL, 0);
			if (NbrFichier != 1)
			{
				ShowMessage ("Trop de fichier");
				return;
			}
 
	  	DragFinish((HDROP)Msg.wParam);
 
		 }
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::DrawGrid1DragDrop(TObject *Sender, TObject *Source, int X,
		  int Y, TDragState State,  bool &Accept)
{
 
	if (Source->InheritsFrom(__classid(TWinControl)))
	{
        TWinControl *SourceControl = dynamic_cast<TWinControl*>(Source);
		if (SourceControl)
		{
			if (dynamic_cast<TDrawGrid*>(SourceControl))
			{
                UnicodeString FileName = L""; // Chemin du fichier déposé
                LoadExcelData(FileName);
            }
        }
	}
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::DrawGrid1DragOver(TObject *Sender, TObject *Source, int X,
          int Y, TDragState State, bool &Accept)
{
	Accept = Source->InheritsFrom(__classid(TWinControl)); // Autorise le drop si la source est un contrôle
}
J'ai créé la fonction LoadExcelData, mais ensuite je coince car je ne vois comment continuer dans la fonction LoadExcelData.
Merci d'aavcne pour votre aide.