Je cherche à créer des forms dynamiquement ... [Delphi] - Programmation
Marsh Posté le 25-02-2002 à 22:54:36
la création est bonne, mais après tu dois faire:
InsertControl(Damier[0][0])
ou
Button1.Parent := Form1;
Marsh Posté le 25-02-2002 à 23:00:18
en plus d'un Owner, il faut que tu assignes un Parent a ton bouton sinon il n'apparaitra pas... et il faut bien sur que tu lui definiesses une taille (width et height) et une position (left et top)... si tu veux qu'il se passe qqchose quand tu cliques dessus, n'oublie pas non plus l'evenement OnClick !
il faut aussi definir la taille de ton tableau!
le plus simple est peut-etre d'utiliser un TStringList, qui va te permettre de "stocker" et acceder facilement a tes boutons:
FButtons: TStringlist
dans les "private" de ta form
FButtons := TStringlist.Create;
for x := 0 to 9 do
for y := 0 to 9 do
FButtons.AddObject(format('%d,%d', [x, y]), TButton.Create(self));
iButton := FButtons.IndexOf(format('%d,%d', [x, y]));
if iButton <> -1 then
with TButton(FButtons.Objects[iButton]) do
begin
Parent=self;
Width=32;
height=32;
etc...etc...
end;
while (FButtons.count <> 0) do
begin
FButtons.Objects[0].free;
FButtons.Delete(0);
end;
FButtons.free;
voila , y'a surement des erreurs, mais c'est une solution possible a ton probleme...
Marsh Posté le 25-02-2002 à 23:37:33
ça marche impec' !
c quoi la différence entre le Component Owner donné au constructeur et la propriété Parent du Boutton ?
Parent est initialisé à Nil par le constructeur, pourquoi pas à Owner ?
Marsh Posté le 26-02-2002 à 00:25:10
Au lieu d'1 tableau utilise une liste TObjectList pour stocker T boutons C + pratique
Marsh Posté le 26-02-2002 à 09:56:15
trueslash a écrit a écrit : Parent est initialisé à Nil par le constructeur, pourquoi pas à Owner ? |
parce que si tu mets ton bouton dans un panel, son owner c'est la form (c'est elle qui détruira le bouton) mais son parent c'est le panel (c'est dans le panel qu'apparaît le bouton)
Marsh Posté le 26-02-2002 à 09:56:37
[SDF]Poire a écrit a écrit : Au lieu d'1 tableau utilise une liste TObjectList pour stocker T boutons C + pratique |
bhen si c'est un damier d'une taille fixe le tableau c'est plus simple...
Marsh Posté le 26-02-2002 à 13:34:33
antp a écrit a écrit : parce que si tu mets ton bouton dans un panel, son owner c'est la form (c'est elle qui détruira le bouton) mais son parent c'est le panel (c'est dans le panel qu'apparaît le bouton) |
dans le cas d'un boutton ds un panel, le owner peut pas être le panel ?
Marsh Posté le 26-02-2002 à 13:44:24
je crois que c'est pas recommandé
enfin non, mais quand c'est la form l'owner elle s'occupe de supprimer tous les composants dont elle est l'owner
donc l'utilisation est pas pareille.
avec le panel c'est toi qui doit supprimer le composant qui l'a comme owner
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
Marsh Posté le 25-02-2002 à 22:28:18
bon voilà, mettons que j'ai une unit Unit1 avec une form Form1 dedans. Dans unit1, j'ai la déclaration suivante:
Damier: array[][] of array of TButton;
à l'aide de ce tableau, je voudrai générer des bouttons sur Form1
j'ai essayé Damier[0][0]:=TButton.create(Form1) mais ça marche pas ...
qqun peut me dire comment faire ?