jderf
Messages postés189Date d'inscriptionmercredi 29 décembre 2004StatutMembreDernière intervention 2 octobre 2014
-
9 sept. 2010 à 10:22
jderf
Messages postés189Date d'inscriptionmercredi 29 décembre 2004StatutMembreDernière intervention 2 octobre 2014
-
10 sept. 2010 à 13:58
Bonjour,
Sur une form j'ai un bouton pour créer des Tframe dynamiquement. Dans le Tframe, j'ai un bouton pour se détruire. J'ai un plantage lors de la destruction du dernier Frame créé.
Voivi un code simplifier qui produit le plantage.
unit Uprincipale;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
BtnCreerCadre: TButton;
procedure BtnCreerCadreClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
counter : integer;
implementation
{$R *.dfm}
uses Ucadre;
procedure TForm1.FormCreate(Sender: TObject);
begin
counter := -1;
end;
procedure TForm1.BtnCreerCadreClick(Sender: TObject);
var NewCadre : Tcadre;
begin
NewCadre := Tcadre.Create(self);
inc(counter);
with NewCadre do
begin
Parent := self;
Name := 'Cadre' + inttostr(counter);
Left := 100 + 10*counter;
Top := 100 + 5*counter
end;
end;
end.
unit Ucadre;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TCadre = class(TFrame)
BtnFermer: TButton;
procedure BtnFermerClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
implementation
{$R *.dfm}
procedure TCadre.BtnFermerClick(Sender: TObject);
begin
parent := nil;
free;
end;
end.
Voila, ce code permet de créer plusieurs cadres, et chaque cadre possède un bouton "fermer" qui fonctionne sauf pour le dernier.
Comment un composant peut "s'autofermer" propement ??