OpenDialogBox

OpenDialogBox - Delphi/Pascal - Programmation

Marsh Posté le 04-05-2003 à 22:54:40    

'Soir,
 
Ma Question est assez simple j'aimerais savoir comment faire pour récupérer le nombre de fichiers sélectionnés par l'utilisateur dans une OpenDialogBox ... Avec l'option AllowMultiSelect a True bien sûr... J'en ai super besoin ^^
 
Merci :)

Reply

Marsh Posté le 04-05-2003 à 22:54:40   

Reply

Marsh Posté le 04-05-2003 à 23:02:51    

propriété "Files" : c'est un TStrings (ou TStringList, mais c'est pareil) te renvoyant la liste des fichiers sélectionnés.
Et donc Files.Count te donne le nombre de fichiers.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 04-05-2003 à 23:13:03    

merci heu :)

Reply

Marsh Posté le 04-05-2003 à 23:27:04    

Au fait ya encore un truc qui me chagrine ...
 
Le OpenDialogBox sert a ouvrir un ou plusieurs fichiers mp3 a mettre dans une ListBox qui va servir de PlayList ... mais comment faire pour mettre a la fois le nom du fichier et son path dans un tableau, et ensuite afficher dans la listbox uniquement le nom du fichier mais garder le path en mémoire pour la lecture ?  
 
1000 merci  :D

Reply

Marsh Posté le 04-05-2003 à 23:38:06    

Une solution serait de maintenant en mémoire une TStringList avec les chemins complets, et ne mettre que les noms de fichiers dans la listbox. Lorsque tu récupères l'index de l'élément sélectionné dans la listebox, tu vas cherche le chemin dans la TStringList qui devra avoir le même nombre d'éléments normalement.
Tu peux aussi avoir une liste d'objets indépendante de ta liste de noms, et utiliser la propriété Items.Objects[] pour les lier à la listbox, mais c'est un peu plus compliqué.
Pour extraire juste le nom de fichier d'un chemin complet, il y a ExtractFileName.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 04-05-2003 à 23:47:43    

heu je débute ... tu saurais me faire le code ou du moins me montrer un exemple ?

Reply

Marsh Posté le 04-05-2003 à 23:53:54    

dans la partie private de ta form tu mets une TStringList
liste: TStringList;
dans le OnCreate tu crées la liste:
liste := TStringList.Create;
dans le OnDestroy tu la détruis:
liste.Free;
 
lorsque tu ajoutais un élément à ta liste tu faisais un truc genre:
Listbox1.Items.Add(nom);
maintenant tu fais:
Listbox1.Items.Add(ExtractFileName(nom));
liste.Add(nom);
 
lorsque l'on sélectionne un item de la liste, ou que tu as besoin de savoir ce qui est sélectionné, je suppose que tu faisais un truc genre:
if Listbox1.ItemIndex <> -1 then
  nom := Listbox1.Items[Listbox1.ItemIndex];
maintenant tu fais:
if Listbox1.ItemIndex <> -1 then
  nom := liste[Listbox1.ItemIndex];


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 04-05-2003 à 23:59:27    

et comment je fais pour les trucs oncreate et ondestroy pcq c est via frames ?

Reply

Marsh Posté le 05-05-2003 à 00:00:00    

enter et exit oups :)

Reply

Marsh Posté le 05-05-2003 à 00:08:34    

Comment ca se fait qu'il n'y aie rien qui s'affiche dans ma liste ??

Reply

Marsh Posté le 05-05-2003 à 00:08:34   

Reply

Marsh Posté le 05-05-2003 à 00:09:20    

heu non surtout pas enter et exit :D
Y a quand même un OnCreate et OnDestroy même sur les frames  
Au fait, pourquoi tu utilises des frames, tu les emploie comme des fenêtres ou bien comme on doit les employer, c'est à dire pour mettre sur des forms.
Si c'est le premier cas, il faut utiliser des forms à la place :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 05-05-2003 à 00:09:42    

Crazy-Eagle a écrit :

Comment ca se fait qu'il n'y aie rien qui s'affiche dans ma liste ??


 
t'as fait une erreur je suppose [:spamafote]
 
bon on verra ça demain :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 05-05-2003 à 14:58:57    

antp a écrit :

heu non surtout pas enter et exit :D
Y a quand même un OnCreate et OnDestroy même sur les frames  
Au fait, pourquoi tu utilises des frames, tu les emploie comme des fenêtres ou bien comme on doit les employer, c'est à dire pour mettre sur des forms.
Si c'est le premier cas, il faut utiliser des forms à la place :D


 
Non c est comme il faut :D
 
Je veux dire ... mon programme c est une appli multi fonction ... a gauche de la fenetre main ya une liste de modules et selon le module qu on choisit eh bien ya une frame qui est chargée dans la partie de droite ...  
"Multi-Fct" = LecteurMP3;ftp;mail,... je fais ca pour tester la puissance de delphi et pour passer le temps :D
(aussi pour pouvoir dire dans 10 ans j'ai fait du delphi et ainsi épater mes enfants mdr  :sol: )

Reply

Marsh Posté le 05-05-2003 à 15:02:40    

ha oui en effet je me souviens t'avais fait un autre topic à ce sujet
donc c'est bien les frames, mais onEnter/onExit c'est pas du tout ce qu'il faut.
en fait pour des frames tu dois ajouter le constructeur et le destructeur :
 
dans la partie publique:
 
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
 
et comme implémentation de ces deux là :
 
constructor Create(AOwner: TComponent);
begin
  liste := TStringList.Create;
  inherited;
end;
 
(liste est la liste dont on parlait plus haut, contenant les noms complets)
 
destructor Destroy; override;
begin
  liste.Free;
  inherited;
end;


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 05-05-2003 à 15:16:25    

Mais où as-tu appris tout ça antp ??? :sol:
 
 

Reply

Marsh Posté le 05-05-2003 à 15:27:21    

en grande partie par moi-même :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 05-05-2003 à 15:32:34    

Déjà que je trouve que je passe pas mal
de temps devant un PC, qu'est-ce que
ça doit être avec toi !  :D  :D

Reply

Marsh Posté le 05-05-2003 à 16:21:26    

Il me met  
[Error] Unit2.pas(51): Undeclared identifier: 'Create'
[Error] Unit2.pas(53): Undeclared identifier: 'liste'
[Error] Unit2.pas(54): This form of method call only allowed in methods of derived types
[Error] Unit2.pas(57): Undeclared identifier: 'Destroy'
[Error] Unit2.pas(38): Unsatisfied forward or external declaration: 'TFrame2.Create'
[Error] Unit2.pas(39): Unsatisfied forward or external declaration: 'TFrame2.Destroy'
 
 :??:  :??:  :??:  :??:  
 
Vais me remettre au php moi  :cry:

Reply

Marsh Posté le 05-05-2003 à 16:32:36    

Oui, j'ai déjà eu ces erreurs en essayant de faire
un Create - Destroy pour tester..
J'ai laissé tombé car c'était juste pour voir mais
je crois que j'avais su ensuite pourquoi ça faisait
ça, mais je ne m'en rappelle plus..  
 :??: Désolé !!
 
Je pense que antp va te dire sans dès qu'il le verra ;)

Reply

Marsh Posté le 05-05-2003 à 16:37:39    

oups pardon :D
constructor Create(AOwner: TComponent);
->  
constructor TNomDeTaFrame.Create(AOwner: TComponent);
sinon évidement il ne fait pas le lien entre la fonction et la classe à la quelle ça se rapporte :D
(note qu'avec les deux dernières erreurs tu aurais pu le remarquer ;))


Message édité par antp le 05-05-2003 à 16:38:08

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 05-05-2003 à 16:48:51    

t'es tout pardonné surtout que ca marche pas encore MDRRR
 
bon bon bon
 
Je jure que ma frame s appelle Frame2 ...
 
[Error] Unit2.pas(41): Undeclared identifier: 'Frame2'
 
Ensuite il me dit que frame2 est référencé dans Frame2 et il inclus Unit2 dans uses ... alors ca va pas si il s inclut lui meme ...
 
[Fatal Error] Unit2.pas(47): Program or unit 'Unit2' recursively uses itself
 
Alors bon .. chuis parti pomper apache la :D

Reply

Marsh Posté le 05-05-2003 à 16:53:04    

elle s'appelle pas plutôt TFrame2 ? on est dans le code de la classe, c'est l'objet instancié qui s'appelle Frame2 (la variable contenant la frame quoi), la classe s'appelle tj TFrame2 je suppose


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 05-05-2003 à 17:03:47    

mdrr ca devient chiant la  
 
Undeclared indentifier 'TFrame2'
 
 :hello:

Reply

Marsh Posté le 05-05-2003 à 17:11:38    

bhen c'est que t'as mis un truc dans le mauvais fichier [:spamafote] sans code c'est difficile de t'aider plus :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 05-05-2003 à 17:14:44    

mdr j'aime trop le [:spamafote] ^^
 
Bon comment t'es ce qu'on va faire ... faut que j'y arrive !!!
 
Je continue a chercher et si ca va pas je reviens  :jap:

Reply

Marsh Posté le 05-05-2003 à 17:19:32    

Donne les morceaux de ton code dont tu n'es pas sûr.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed