cs_daniel85
Messages postés4Date d'inscriptionlundi 26 septembre 2005StatutMembreDernière intervention18 avril 2006
-
27 mars 2006 à 16:52
cs_daniel85
Messages postés4Date d'inscriptionlundi 26 septembre 2005StatutMembreDernière intervention18 avril 2006
-
28 mars 2006 à 17:33
J'ai crée mon propre composant de type TPanel. Dans celui si j'ai insére quelques contrôles (des edit box).
Mais lorsque j'insère mon composant dans une fiche je voudrais bien voir les composants qui s'y trouvent, car je les vois que après la compilation. Ca serait utile de pouvoir les voirs lors du design-time pour pour pouvoir définir les evenements des contôles qui se trouvent dans mon Panel.
Est-ce que quelqu'un peut m'aider??
destructor TMultiEditPanel.Destroy;
begin
fEdit1.Free;
fEdit2.Free;
inherited Destroy;
end;
procedure TMultiEditPanel.Change;
begin
if Assigned(fOnChange) then fOnChange(Self);
end;
procedure TMultiEditPanel.DoEditChange(Sender : TObject);
begin
Change;
end;
procedure TMultiEditPanel.fSetEditText(index : integer; Val : string);
begin
case index of
0: begin fEdit1.Text := Val; fEdit1.OnChange(fEdit1); end;
1: begin fEdit2.Text := Val; fEdit2.OnChange(fEdit2); end;
end;
end;
function TMultiEditPanel.fGetEditText(index : integer) : string;
begin
case index of
0: result := fEdit1.Text;
1: result := fEdit2.Text;
end;
end;
procedure TMultiEditPanel.fSetEdits(index : integer; Val : TEdit);
begin
case index of
0: begin fEdit1.Assign(Val); fEdit1.OnChange(fEdit1); end;
1: begin fEdit2.Assign(Val); fEdit2.OnChange(fEdit2); end;
end;
end;
voila comment ta classe doit etre faite. comme cela tout s'affiche correctement et de plus la modification du texte declanche l'evenement OnChange du Panel. On peut bien sur ameliorer cet evenements en declarant un type procedure plus complexe, par exemple pour savoir quel texte a ete modifier :
TChangeProc = procedure (Sender : TObject; TextBox : integer; Text : String) of object;
et declarer la propriété OnChange et fOnChange non plus comme TNotifyEvent mais comme TChangeProc et modifier le code en consequence.
si tu ajoute d'autre chose qui doivent declancher l'evenement, utilise la procedure Change et si il s'agit de composant (boutton ect...) assigne les evenements (OnClick ect...) a des procedures comme DoEditChange...
bien entendus, ne pas oublier par la suite d'installer le composant et aussi de declarer une procedure Register dans l'unité pour enregistrer le nouveau composant dans la palette souhaitée.