IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Items dans TlistBox


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 439
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 439
    Points : 1 330
    Points
    1 330
    Par défaut Items dans TlistBox
    Bonjour à toutes et à tous,

    Petit problème que j'ai déjà rencontré souvent sans explication.

    J'ai un composant TlisBox (listeimg), je charge 5 fichiers Bmp ou Jpg.

    Je crée ma vidéo en fichier AVI et à la lecture, j'obtiens 4 images, la dernière semble perdue.

    Peux importe le nombre d'images, la dernière n'est pas visible dans l'avi.

    Voici mon code :

    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
    46
    47
    48
    49
    50
    51
     
    procedure TForm1.BenregistrerClick(Sender: TObject);
    var
    x,y:integer;
    Filename : String;
    begin
     
    avirecorder1.FPS:=fps.Value;
    avirecorder1.Width:=longueur.Value;
    avirecorder1.Height:=largeur.Value;
     
     
      AVIRecorder1.Filename := sd1.filename;
      FileName := ExtractFileName(sd1.filename);
     
    if avirecorder1.CreateAVIFile(0) then
    begin
     
    p1.Maxvalue:=listeimg.Count -1; //Ma jauge
     
    bmp.Width:=longueur.Value;
    bmp.Height:=largeur.Value;
     
    for x:= 0 to listeimg.Count -1 do begin
     
    p1.Progress:=x;
     
     if Uppercase(ExtractFileExt(listeimg.Items.Strings[x]))='.JPG' then
     begin
     jpg.LoadFromFile(listeimg.Items.Strings[x]); 
     jpg.PixelFormat:=jf24Bit;          
     image1.Picture.Bitmap.Assign(jpg); 
     avirecorder1.AddAVIFrame(image1.Picture.Bitmap);
     
     end;
     
     if Uppercase(ExtractFileExt(listeimg.Items.Strings[x]))='.BMP' then
     begin
    bmp.LoadFromFile(listeimg.Items.Strings[x]);
    bmp.Canvas.StretchDraw(rect(0,0,longueur.Value,largeur.Value),bmp);
    avirecorder1.AddAVIFrame(bmp);
     
    end;
     
    end;
    avirecorder1.CloseAVIFile();
     
    p1.Progress:=0;
     
    end;
    end;
    Si quelqu'un avait une idée, merci d'avance.

    @+,

    Cincap

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 439
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 439
    Points : 1 330
    Points
    1 330
    Par défaut J'ai oublié l'autre question
    En effet, j'ai aussi besoin de savoir si il était possible d'afficher que le nom du fichier image et son extension lors d'une sélection multiselect.

    Sinon pour un seul fichier, je connais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TFFilmImage.BAjouterListeClick(Sender: TObject);
    Var
     Filename : String;
    begin
     
     FileName := ExtractFileName(bdimage.FileName);
     listeimg.Items.Add(filename);
     
    end;
    Mais dans mon cas, j'ai aussi ceci lorsque je sélectionne plusieurs fichiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if MultiSelect.Checked then listeimg.Items.Assign(bdimage.Files);
    Et avec ce code, j'ai forcément le chemin complet ce qui ne m'arrange pas.

    Merci d'avance,

    @+,

    Cincap

  3. #3
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut
    hello,

    1 question :
    - Est ce que tu es sur que tu rentres le nombre de fois necessaire dans ta boucle ? (tu as qu'a faire un ShowMessage() en rentrant dans ta boucle pour en etre sur.

    - Je sais pas s'il y a une fonction qui donne directement le nom du fichier mais sinon, la fonction monSplit() que j'ai posté ici fera largement ton affaire.

    http://www.developpez.net/forums/d63...i/#post3764135

    ton délimiteur est : '/' et tu affiches uniquement le dernier élément de la liste ainsi crée.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 439
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 439
    Points : 1 330
    Points
    1 330
    Par défaut Je ne vois pas ou insérer la fonction !
    Bonsoir,

    @ Aos, merci de ta réponse, mais je ne vois pas ou insérer ta fonction dans mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if MultiSelect.Checked then listeimg.Items.Assign(bdimage.Files);
    J'essayerai encore demain.

    @+,

    Cincap

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 439
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 439
    Points : 1 330
    Points
    1 330
    Par défaut Pour la vidéo, une explication !
    Bonjour à toutes et à tous,

    Concernant le problème de la vidéo, c'est ok en effet, cela se situait au niveau de l'emploi du codec DviX, donc le code est correct.

    Sans compression, le fichier Avi affichait 4 Bitmaps et avec compression DivX, 3 Bitmaps.

    Pourtant ces codecs ont été téléchargés sur le site DivX.

    Par contre pour afficher que le nom avec son extension dans le Tlistbox avec une multisélection dans un TopenDialog, je cale toujours.

    Pour ne pas vous faire perdre du temps, je vais cloturer ce topic.

    Bon Week-end.

    @+,

    Cincap

  6. #6
    Aos
    Aos est déconnecté
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 187
    Points
    187
    Par défaut
    Mauvaise idée de mettre RESOLU alors que ça l'est pas...
    Ca va piéger les gens qui vont chercher la prochaine fois un problème similaire au tiens.
    Bref.

    Pour la fonction SPLIT, il suffit (je pense mais j'ai pas essayé) de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if MultiSelect.Checked then 
       listeimg.Items.Assign(monSplit(bdimage.Files,'\')[monSplit.count-1]);

    A condition que bdimagine.Files soit bien un string, sinon tu le convertis en String avant de l'appeler, mais je pense bien que c'est un string.

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 439
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 439
    Points : 1 330
    Points
    1 330
    Par défaut Erreur avec la fonction
    @ Aos, Bonsoir,

    Voila j'ai l'erreur suivante en utilisant la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if MultiSelect.Checked then 
       listeimg.Items.Assign(monSplit(bdimage.Files,'\')[monSplit.count-1]);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [Erreur] UnitFilmImage.pas(234): Types incompatibles : 'String' et 'TStrings'
    Ne te tracasse pas trop.

    De mon côté j'ai essayé des tas de trucs en multiselect.

    @+,

    Cincap

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 747
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 747
    Points : 13 315
    Points
    13 315
    Par défaut
    Cette fonction MonSplit ne peut pas fonctionner en l'état. Elle transforme simplement une chaîne en TStrings sans extraction.

    Cincap, tu sais le faire avec un fichier, fait la même chose dans une boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i := 0 to bdimage.Files.Count -1 do
      listeimg.Items.Add(ExtractFileName(bdimage.Files[i]));

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 439
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 439
    Points : 1 330
    Points
    1 330
    Par défaut Andnotor, mais bien entendu cela va de soit
    @ Andnotor, dis donc, j'avais essayé une boucle mais apparemment il me manquait un paramètre et avec tous les essais, complications à la compilation.

    Décidément, c'est encore toi qui donne une excellente solution.

    Je viens de tester et cela fonctionne logiquement

    Merci à toi et à tous.

    Je clôture ce topic.


    @+,

    Cincap

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [système] Comment ajouter un item dans le context menu de Windows ?
    Par ddmicrolog dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 29/06/2005, 17h03
  2. changer le texte de tous les Items dans un mainmenu
    Par C.M dans le forum Composants VCL
    Réponses: 7
    Dernier message: 25/07/2004, 13h19
  3. Suppression d'item dans une arborescence
    Par jonzuzu dans le forum MFC
    Réponses: 2
    Dernier message: 24/02/2004, 17h45
  4. Réponses: 2
    Dernier message: 17/08/2003, 20h07
  5. PopupMenu sur item de TListBox
    Par nmathon dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/03/2003, 17h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo