Création dynamique de composants

Description

C'est pas bien compliquer...
Sur la fiche on a aucun élément, la fiche se remplie lors de sa création...
On voit aussi comment affecter des procédures aux évènements respectifs des composants.

Source / Exemple :


unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    Procedure Ontimer1(sender : Tobject);//On créé manuellement la procédure qui sera afféctée à l'évènement Ontimer du timer
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Panel1,Panel2:TPanel;//On déclare les panel que l'on va créer
  Memo:Tmemo; //Ainsi que le memo
  Timer1:TTimer;// Puis le timer aussi
implementation

{$R *.dfm}

procedure Tform1.Ontimer1(Sender: TObject); // Voila la procédure qui sera affectée au timer
begin
Panel2.Caption:=inttostr( strtoint(panel2.Caption)+1);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Panel1:=Tpanel.Create(Self);  // On créé le panel contenant le Memo
With Panel1 do begin   //Puis on défini les propriétés du panel(comme pour tous les composants qui vont être créés)
Parent:=Form1;
Top:=4;
left:=4;
Width:=300;
height:=200;
end;

Memo:=TmEmo.Create(Self);  //On créé le Memo contenu par le Panel
With Memo do begin
Parent:=Panel1;
Align:=AlClient;
Font.Name:='Arial';
Font.Size:=9;
Font.Color:=clRed;
Lines.add('C''est magique y''avait rien avant :D');
Lines.Add('Youpi tralala');
ScrollBars:=ssBoth;
 end;

Panel2:=tpanel.Create(Self);//On crée le Panel qui sera modifié par le timer
With Panel2 do begin
Parent:=Form1;
Top:=4;
height:=200;
Width:=300;
Left:=Panel1.Left+Panel1.Width+4;
Caption:='0';
Font.Height:=75;
           end;

Timer1:=TTimer.Create(Self); //Création d'un timer
With timer1 do begin
Interval:=1000;
Timer1.OnTimer:=OnTimer1; //On affecte a son évènement la procedure que l'on a créé avant
end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//On libère le tous ...
Memo.Free;
Panel1.free;
Panel2.free;
Timer1.Free;
end;

end.

Conclusion :


Hopla :)

Codes Sources

A voir également

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.