OpenDialogBox - Delphi/Pascal - Programmation
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.
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
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.
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 ?
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];
Marsh Posté le 04-05-2003 à 23:59:27
et comment je fais pour les trucs oncreate et ondestroy pcq c est via frames ?
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 ??
Marsh Posté le 05-05-2003 à 00:09:20
heu non surtout pas enter et exit
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
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
bon on verra ça demain
Marsh Posté le 05-05-2003 à 14:58:57
antp a écrit : heu non surtout pas enter et exit |
Non c est comme il faut
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
(aussi pour pouvoir dire dans 10 ans j'ai fait du delphi et ainsi épater mes enfants mdr )
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;
Marsh Posté le 05-05-2003 à 15:27:21
en grande partie par moi-même
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 !
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
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
Marsh Posté le 05-05-2003 à 16:37:39
oups pardon
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
(note qu'avec les deux dernières erreurs tu aurais pu le remarquer )
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
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
Marsh Posté le 05-05-2003 à 17:03:47
mdrr ca devient chiant la
Undeclared indentifier 'TFrame2'
Marsh Posté le 05-05-2003 à 17:11:38
bhen c'est que t'as mis un truc dans le mauvais fichier sans code c'est difficile de t'aider plus
Marsh Posté le 05-05-2003 à 17:14:44
mdr j'aime trop le ^^
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
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