Bonsoir,
Voilà mon problème j'ai un listbox qui énumère tous les fichiers d'un répertoire et je voudrais que lorsque je fais un double clic sur un des item de la listbox le fichier énuméré soit lancé.
Pensez-vous que cela soit possible ?
Merci.
Bonsoir,
Voilà mon problème j'ai un listbox qui énumère tous les fichiers d'un répertoire et je voudrais que lorsque je fais un double clic sur un des item de la listbox le fichier énuméré soit lancé.
Pensez-vous que cela soit possible ?
Merci.
La source de la majorité des bugs sur Windows se situe entre le clavier et la chaise...
Salut
C'est tout à fait possible .
Ta ListBox contient les chemins absolu de tes fichiers ?
Si oui, il suffit de faire dans le OnDblClick de la ListBox ceci:
Ne pas oublier de mettre dans les uses l'unité ShellAPI .
Code : Sélectionner tout - Visualiser dans une fenêtre à part ShellExecute(0,'OPEN',PChar(ListBox1.Items.Strings[ListBox1.ItemIndex]),nil,nil,SW_MAXIMIZE);
@+
Merci de cette réponse mais ce n'est pas la bonne...
Les chemins de mes fichiers sont récupéré à la création de la fiche principale mais viennent d'un répertoire désigné.
Voilà le code de la récupération :
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 procedure TForm1.FormCreate(Sender: TObject); Var Chemin : String; Info : TSearchRec; begin ListBox1.Items.Clear; ListBox2.Items.Clear; Chemin := 'F:\Documents de r3\Mes vidéos\Films\'; If FindFirst(Chemin+'*.*',faAnyFile,Info)=0 Then Begin Repeat If Not((Info.Attr And faDirectory)=0) Then ListBox2.Items.Add(Info.FindData.cFileName) Else ListBox1.Items.Add(Info.FindData.cFileName) Until FindNext(Info)<>0; FindClose(Info); End; end;
La source de la majorité des bugs sur Windows se situe entre le clavier et la chaise...
Re,
Tu as le choix :
Soit tu mets la variable Chemin en globale et tu utilises ce code :
Ou soit tu rajoutes le chemin à la ListeBox :
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 var Form1: TForm1; Chemin : String; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); Var Info : TSearchRec; begin ListBox1.Items.Clear; ListBox2.Items.Clear; Chemin := 'F:\Documents de r3\Mes vidéos\Films\'; If FindFirst(Chemin+'*.*',faAnyFile,Info)=0 Then Begin Repeat If Not((Info.Attr And faDirectory)=0) Then ListBox2.Items.Add(Info.FindData.cFileName) Else ListBox1.Items.Add(Info.FindData.cFileName) Until FindNext(Info)<>0; FindClose(Info); End; end; procedure TForm1.ListBox1DblClick(Sender: TObject); begin ShellExecute(0,'OPEN',PChar(Chemin+ListBox1.Items.Strings[ListBox1.ItemIndex]),nil,nil,SW_MAXIMIZE); end;
A toi de choisir
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 var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); Var Info : TSearchRec; Chemin : String; begin ListBox1.Items.Clear; ListBox2.Items.Clear; Chemin := 'F:\Documents de r3\Mes vidéos\Films\'; If FindFirst(Chemin+'*.*',faAnyFile,Info)=0 Then Begin Repeat If Not((Info.Attr And faDirectory)=0) Then ListBox2.Items.Add(Chemin+Info.FindData.cFileName) Else ListBox1.Items.Add(Chemin+Info.FindData.cFileName) Until FindNext(Info)<>0; FindClose(Info); End; end; procedure TForm1.ListBox1DblClick(Sender: TObject); begin ShellExecute(0,'OPEN',PChar(ListBox1.Items.Strings[ListBox1.ItemIndex]),nil,nil,SW_MAXIMIZE); end;
A+
Salut bionicleman
Sauf erreur de ma part, dans
cfilename renvoie le nom court du fichier (sans son chemin)
Code : Sélectionner tout - Visualiser dans une fenêtre à part ListBox2.Items.Add(Info.FindData.cFileName)
Si c'est le cas, en utilisant le code de ero-sennin, ça donne
...à voir
Code : Sélectionner tout - Visualiser dans une fenêtre à part ShellExecute(0,'OPEN',chemin+PChar(ListBox1.Items.Strings[ListBox1.ItemIndex]),nil,nil,SW_MAXIMIZE);
Choisir, c'est renoncer...
Re, Merci pour vos deux réponses claires. J'ai finalement choisi cette méthode, l'autre étant moche : Elle montrait le chemin du fichier, très lourd.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 var Form1: TForm1; Chemin : String;
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 procedure TForm1.FormCreate(Sender: TObject); Var Info : TSearchRec; begin ListBox1.Items.Clear; ListBox2.Items.Clear; Chemin := 'F:\Documents de r3\Mes vidéos\Films\'; If FindFirst(Chemin+'*.*',faAnyFile,Info)=0 Then Begin Repeat If Not((Info.Attr And faDirectory)=0) Then ListBox2.Items.Add(Info.FindData.cFileName) Else ListBox1.Items.Add(Info.FindData.cFileName) Until FindNext(Info)<>0; FindClose(Info); End; end; procedure TForm1.ListBox1DblClick(Sender: TObject); begin ShellExecute(0,'OPEN',PChar(chemin+ListBox1.Items.Strings[ListBox1.ItemIndex]),nil,nil,SW_MAXIMIZE); end;
La source de la majorité des bugs sur Windows se situe entre le clavier et la chaise...
peut-être devrait tu même mettre chemin en const globale, et pas en var, si il n'est pas modifié
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager