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 46 47 48 49 50
| __fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Extensions->Add(".sb2");
// Appel à Search, avec pour liste des fichiers les items des deux listes "Biblio" & "Examples"
SearchEx(ExtractFilePath(Application->ExeName)+"bibliotheque\\", Extensions, Biblio,0);
SearchEx(ExtractFilePath(Application->ExeName)+"exemples\\", Extensions, Examples,1);
delete Extensions;
}
//-----------------------------fonction de listage de fichiers------------------
void __fastcall TForm1::SearchEx(AnsiString FilePath, TStringList * Extensions, TStrings * ListeFichiers, int RangMenu)
{
TSearchRec Infos_fichier;
TMenuItem *NewItem = new TMenuItem(this);
if (!FindFirst(FilePath+"*.*", faAnyFile, Infos_fichier))
do
{
for (int i = 0 ; i < Extensions->Count ; i++)
{
if (ExtractFileExt(Infos_fichier.Name).LowerCase() == Extensions->Strings[i].LowerCase())
{
ListeFichiers->Add(ExpandFileName(Infos_fichier.Name));
AnsiString CleanName = StringReplace(Infos_fichier.Name, ".sb2", "",TReplaceFlags() << rfReplaceAll); //nom seul du fichier, sans le chemin
//nettoie le nom de fichier de son extension sb2
ListBox1->Items->Add(CleanName);
//rajout d'entrées dans le menu
NewItem = new TMenuItem(this);
NewItem->Caption = CleanName;
NewItem->Name = CleanName;
NewItem->OnClick=ExempleClick(Infos_fichier.Name); // et là ça ne marche pas ! J'aimerais que chaque entrée provoque l'utilisation du programme ci-dessous ExempleClick
MainMenu1->Items->Items[0]->Items[RangMenu]->Add(NewItem);
}
}
}
while(!FindNext(Infos_fichier));
FindClose(Infos_fichier);
}
//---------------------pour le fichier ça écrit dans un fichier BAT puis le lance pour que ce soit visible/compréhensible par l'utilisateur------------------------------
void __fastcall TForm1::ExempleClick(AnsiString NomFichier)
{
ofstream fichier_s2("scratch2.bat", ios::out | ios::trunc); // ouverture en écriture avec effacement du fichier ouvert
if(fichier_s2)
{
//fichier_s2 << "@echo off\nbreak ON\ncls\nSET currentpath=%~dp1\nSET dossier_scratch="<< '"' << locate_scratch2 << '"'<< "\nstart %dossier_scratch% %currentpath%" << NomFichier << ".sb2";
fichier_s2.close();
}
else ShowMessage("Le fichier scratch2.bat n'existe pas.");
ShellExecute(0, 0, "scratch2.bat", 0, 0 , SW_HIDE );
} |
Partager