Création dynamique de composant

cs_Amadeus 129 Messages postés mercredi 2 janvier 2002Date d'inscription 15 mars 2004 Dernière intervention - 9 janv. 2002 à 13:41 - Dernière réponse :  HAMZA
- 1 févr. 2016 à 14:28
Comment créer dynamique des contrôle TImage ?
Je voudrais créer sur une Form autant de TImage que d'image se trouvant dans un répertoire donné. Comment faire car je ne suis pas un expert des objets. Auriez-vous une piste ?
Afficher la suite 

Votre réponse

5 réponses

LesDelphistes 10 Messages postés jeudi 10 janvier 2002Date d'inscription 18 janvier 2002 Dernière intervention - 10 janv. 2002 à 15:06
0
Merci
En effet tu peux tout à fait créer dynamiquement des Timages sur ta Form sans les avoir au préalable collé dessus sous l'IDE de Delphi.
Il suffit d'abord de créer l'objet (ou instance de la classe (du composant TImage)), puis d'associer le nouvel objet à sa Form Mere :

//////////////////////////////////////////////
var tabImageExemple : TImage;
begin
ImageExemple := TImage.Create(...);
FormPrincipal.AddComponent(ImageExemple);
end;
////////////////////////////////////////////

Ensuite, si tu veux en avoir plusieurs, utilise ou un tableau (array) ou une liste dynamique ( un TList par exemple ).

Mais même si c'est plus simple de faire plusieurs TImage pour faire ton Browser, je te conseille pas de faire comme ca... Trop lourd...
Utilise plutot un seul TImage (ou du moins un TCanvas ) et avec les API windows essaye d'y incruster plusieurs images, c'est pas si compliqué que ca...
Bon courage !

@+

Duf (WebMaster lesdelphistes.multimania.com)
Salut, svp .. je veux créer des composants ( je l'ai déjà fais ) mais dans une autre form ( QReport ) pour être précis, c'est des 'QR CODE' .
le Button est dans la 'Form1', et quand je clique je veux les image dans la feuille d'impression , esque c'est possible ? Merçi.
Commenter la réponse de LesDelphistes
cs_Amadeus 129 Messages postés mercredi 2 janvier 2002Date d'inscription 15 mars 2004 Dernière intervention - 10 janv. 2002 à 17:11
0
Merci
Quel Uses faut-il utliser car Delphi ne reconnait pas AddComponent. Il n'est pas non plus dans l'aide.
Commenter la réponse de cs_Amadeus
PhGORMAND 54 Messages postés jeudi 3 janvier 2002Date d'inscription 20 juillet 2006 Dernière intervention - 11 janv. 2002 à 14:47
0
Merci
Salut . Voici un code qui fonctionne. Attention ce n'est qu'un exemple. Explore le composant TImageList, ça peut t'aider.

// Exemple de création dynamique de composants ( ici des images )
// E-Mail : philippe.gormand@free.fr
// URL : http://philippe.gormand.free.fr/

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

Uses ExtCtrls;

Var
// Une Seule image
Image1 : TImage;

// Un tableau d'images
Image : Array[1..5] Of TImage;

procedure TForm1.Button1Click(Sender: TObject);
begin
Image1:=TImage.Create(Self);
Image1.Parent:=Form1;
Image1.Top:=0;
Image1.Left:=0;
Image1.Width:=100;
Image1.Height:=100;
Image1.AutoSize:=True;
Image1.Visible:=True;
If OpenDialog1.Execute Then
Image1.Picture.BitMap.LoadFromFile(OpenDialog1.FileName);
end;

procedure TForm1.Button2Click(Sender: TObject);
Var
I : integer;

begin
For I:= 1 To 5 Do
begin
// Créer les 5 Images
Image:=TImage.Create(Self);

// Parmétrer les Images
With Image[I] Do
begin
Parent:=Form1;
Top:=0;
Left:=0;
Width:=100;
Height:=100;
AutoSize:=True;
Visible:=True;
end;
end;
// Utiliser les images ici ou ailleur dans le programme
// La variable Image est globale.
//................
//................
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
Var
I : Integer;
begin
// Libérer la memoire des images qui ont été créée.
If Image1 <> Nil Then Image1.Free;
For I:= 1 To 5 Do If Image[I] <> Nil Then Image[I].Free;
end;

end.
Commenter la réponse de PhGORMAND
ricopetitdejeuner 33 Messages postés mercredi 26 décembre 2001Date d'inscription 13 janvier 2006 Dernière intervention - 10 juin 2004 à 18:41
0
Merci
Pour PhGORMAND, ton code marche nickel, il y a juste une petite erreur (ca peut servir aux autres:

// Créer les 5 Images
Image:=TImage.Create(Self);

remplacer par

// Créer les 5 Images
Image[I]:=TImage.Create(Self);

Bon codage
Commenter la réponse de ricopetitdejeuner

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.