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 :

Probleme avec un tableau d'image


Sujet :

Delphi

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Probleme avec un tableau d'image
    Je n'arrive pas à remplir un tableau avec des images (les objets 'image' , pas des dessins ou des photos).
    J en aurais besoin pour pouvoir déplacer ces images(objets) simplement avec des procédures.
    Help please!
    Voilà le 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
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls;
     
    type
      TForm1 = class(TForm)
        Image1: TImage;
        Image2: TImage;
        Image3: TImage;
        Image4: TImage;
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
      tab_im = array[1..4] of Timage;
     
    var
      Form1: TForm1;
      tab:tab_im;
     
    implementation
     
    {$R *.dfm}
     
     
    begin
    tab[1]:=Form1.Image1;
    tab[2]:=Form1.Image2;
    tab[3]:=Form1.Image3;
    tab[4]:=Form1.Image4;
     
    end.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 662
    Points : 25 450
    Points
    25 450
    Par défaut
    (merci d'avoir édité !)

    Dommage que Tab ne soit pas un membre privé de Form1 !

    ton "begin" arrive comme cela sans procédure ?
    c'est une syntaxe à l'ancienne de La section initialization
    On ne voit plus ce QUE dans le DPR, évite cela dans un PAS

    Est-ce Form1 ne serait pas à nil ?
    As-tu une erreur comme violation d'accès ou une Runtime error ?

    Le OnCreate (voir l'inspecteur d'objets, onglet évènement), sera un meilleur endroit pour ce code !

    Pense que ton tableau ne contiendra pas une copie de l'image, faut un peu le considérer un "raccourci" vers tes objets
    j'ignore si tu connais les principes de référence d'objet (l'instance) et les pointeurs en général
    Connais tu aussi les notions d'instanciation et libération ?

    A LIRE : Cours et tutoriels sur la programmation Delphi par Frédéric Beaulieu

  3. #3
    Membre actif Avatar de Basile le disciple
    Homme Profil pro
    étudiant Centrale Supélec
    Inscrit en
    Avril 2013
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : étudiant Centrale Supélec

    Informations forums :
    Inscription : Avril 2013
    Messages : 147
    Points : 279
    Points
    279
    Par défaut
    Tu n'es pas obligé de passer par un tableau pour faire ça! Utilise FindComponent :
    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
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls;
     
    type
      TForm1 = class(TForm)
        Image1: TImage;
        Image2: TImage;
        Image3: TImage;
        Image4: TImage;
        Timer1: TTimer;
        procedure Timer1Timer(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Timer1Timer(Sender: TObject);
    var i : integer;
    begin
      For i:=1 to 4 do TImage(FindComponent('Image'+inttostr(i))).Left:=TImage(FindComponent('Image'+inttostr(i))).Left+1;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      DoubleBuffered:=true;
    end;
     
    end.
    Si tu veux quand même passer par un tableau, ce code marche :
    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
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls;
     
    type
      TForm1 = class(TForm)
        Image1: TImage;
        Image2: TImage;
        Image3: TImage;
        Image4: TImage;
        Timer1: TTimer;
        procedure FormCreate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Déclarations privées }
        tab : array[0..3] of TImage;
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      DoubleBuffered:=true;
      tab[0]:=Image1;
      tab[1]:=Image2;
      tab[2]:=Image3;
      tab[3]:=Image4;
    end;
     
    procedure TForm1.Timer1Timer(Sender: TObject);
    var i : integer;
    begin
      For i:=0 to 3 do tab[i].left:=tab[i].left+1;
    end;
     
    end.
    Mais pour faire bouger des images, il faut mieux tout redessiner dans un bitmap, c'est plus propre et après plus facile à exploiter :

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls;
     
    type
      TForm1 = class(TForm)
        Image1: TImage;
        Image2: TImage;
        Image3: TImage;
        Image4: TImage;
        Timer1: TTimer;
        procedure FormCreate(Sender: TObject);
        procedure FormResize(Sender: TObject);
        procedure FormPaint(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Déclarations privées }
        bmp : TBitmap;
        v : integer;
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      bmp:=TBitmap.Create;
    end;
     
    procedure TForm1.FormResize(Sender: TObject);
    begin
      bmp.Width:=ClientWidth;
      bmp.Height:=ClientHeight;
    end;
     
    procedure TForm1.FormPaint(Sender: TObject);
    var i :integer;
    begin
      With bmp.Canvas do
      begin
        Brush.Color:=clWhite;
        FillRect(ClientRect);
        For i:=1 to 4 do Draw(v,bmp.Height div 4*(i-1),TImage(FindComponent('Image'+inttostr(i))).Picture.Bitmap);  // le top est juste  un exemple
      end;
      Canvas.Draw(0,0,bmp);
    end;
     
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      inc(v);
      FormPaint(nil);
    end;
     
    end.

Discussions similaires

  1. probleme avec un tableau de list
    Par jtlb++ dans le forum C++
    Réponses: 4
    Dernier message: 16/07/2006, 09h17
  2. Probleme avec les "input type="image" "
    Par khokho dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 26/03/2006, 17h12
  3. Probleme avec un tableau
    Par Seth77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/02/2006, 11h43
  4. [WIN XP] Probleme avec l'apercu d'image
    Par tiboooo dans le forum Windows XP
    Réponses: 6
    Dernier message: 10/01/2006, 20h27
  5. Probleme avec un tableau
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 14
    Dernier message: 09/12/2005, 01h03

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