Creation dynamique de boutons

Signaler
Messages postés
1
Date d'inscription
mardi 9 avril 2002
Statut
Membre
Dernière intervention
9 avril 2002
-
Messages postés
13
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
2 juillet 2003
-
Qd je cree un bouton dynamiquement, suis-je oblige de le declarer au prealable ?

Parce qu'en fait je ne sais au depart combien je dois creer de bouton dc difficile de les declarer tous...

3 réponses

Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Ce type de composant visuel est issu du type TComponent.
Il doit donc posséder un propriétaire, un parent et un nom différent de celui des autres.
Exemple :
Au niveau Interface :
private
Counter: Integer;

Au niveau implementation :

procedure TForm1.FormMouseDown(
Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
NewCtrl: TControl;
NewName: String;
begin
// create the control
NewCtrl := TButton.Create (self);
// Masquer temporairement pour éviter
// le flickering
NewCtrl.Visible := False;
// Déclarer parent et position
NewCtrl.Parent := self;
NewCtrl.Left := X;
NewCtrl.Top := Y;
// Rechercher un nom unique (et un Caption)
Inc (Counter);
NewName := NewControl.ClassName + IntToStr (Counter);
//Retirer le 'T'
Delete (NewName, 1, 1);
NewCtrl.Name := NewName;
// Rendre visible
NewCtrl.Visible := True;
end;

Un type Tcontrol permet dans le cas présent de déclarer différents type de contrôles mais n'est pas absolument indispensable si tu ne dois créer que des boutons.
Le contrôle propriétaire est chargé de la destruction des objets 'sous sa garde', tu n'as même pas à te préoccuper de leur destruction.

May Delphi be with you.
Messages postés
5
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
29 avril 2002

-------------------------------
Réponse au message :
-------------------------------

Ce type de composant visuel est issu du type TComponent.
Il doit donc posséder un propriétaire, un parent et un nom différent de celui des autres.
Exemple :
Au niveau Interface :
private
Counter: Integer;

Au niveau implementation :

procedure TForm1.FormMouseDown(
Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
NewCtrl: TControl;
NewName: String;
begin
// create the control
NewCtrl := TButton.Create (self);
// Masquer temporairement pour éviter
// le flickering
NewCtrl.Visible := False;
// Déclarer parent et position
NewCtrl.Parent := self;
NewCtrl.Left := X;
NewCtrl.Top := Y;
// Rechercher un nom unique (et un Caption)
Inc (Counter);
NewName := NewControl.ClassName + IntToStr (Counter);
//Retirer le 'T'
Delete (NewName, 1, 1);
NewCtrl.Name := NewName;
// Rendre visible
NewCtrl.Visible := True;
end;

Un type Tcontrol permet dans le cas présent de déclarer différents type de contrôles mais n'est pas absolument indispensable si tu ne dois créer que des boutons.
Le contrôle propriétaire est chargé de la destruction des objets 'sous sa garde', tu n'as même pas à te préoccuper de leur destruction.

May Delphi be with you.

-------------------------------
Réponse au message :
-------------------------------

Qd je cree un bouton dynamiquement, suis-je oblige de le declarer au prealable ?

Parce qu'en fait je ne sais au depart combien je dois creer de bouton dc difficile de les declarer tous...
Messages postés
13
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
2 juillet 2003

euh moi je crée avec ce code des TSpeedButton mais j'arrive pas a mettre un caption...
help me :)