yoghisan
Messages postés204Date d'inscriptionsamedi 10 mai 2003StatutMembreDernière intervention 2 juin 2005
-
29 janv. 2004 à 02:38
yoghisan
Messages postés204Date d'inscriptionsamedi 10 mai 2003StatutMembreDernière intervention 2 juin 2005
-
3 févr. 2004 à 20:26
Bonjour,
Je suis entrain de créer un composant hérité du TEdit. ce composant doit gérer uniquement des chiffres avec quelques fonctionnalités (par exemple : mettre des unités). Dès que j'aurai fini, je le mettrai sur le site si il n'existe pas encore.
J'ai lu la documentation Borland sur le guide du concepteur de composants. J'ai compris l'essentiel mais je ne sais toujours pas comment faire...
Ce que je veux faire c'est surchargé les événements OnKeyDowm, OnKeyPress et OnKeyUp.
La documentation (page 4-7) déconseille d'utiliser les messages Windows quand l'evenement exite déjà, c'est mon cas. J'ai quand meme essayé comme ca et ca marche.
La documention (page 4-6) précaunise de changer la gestion des évéments standarts (controles fenêtrés). Et ca, je n'y arrive pas. Pouvez vous me dire comment on fait ca ?
Constructor TNumEdit.Create (AOwner : TComponent);
begin
Inherited Create(AOwner);
Text:='MonEdit';
end;
procedure TNumEdit.KeyPress(var Key: Char);
begin
Inherited KeyPress(Key);
if not (Key in ['0'..'9', '-', DecimalSeparator,#8]) then
begin
key:=#0;
beep;
end else if ((Key DecimalSeparator) or (key '-')) and (Pos(Key, Text) > 0) then
begin
If Key = DecimalSeparator then
begin
SelStart := Pos(Key, Text);
SelLength := Length(Text);
end;
key:=#0;
end else
if (Key = '-') and (Selstart <> 0) then
begin
key:=#0;
beep;
end;
end;
procedure Register;
begin
RegisterComponents('xxx', [TNumEdit]);
end;
end.
donc le principe est d'utiliser Override pour indiquer qu'on surcharge la méthode, ensuite tout dépend de la gestion que l'événement doit faire ,ici on laisse les événements de la classe de base Inherited KeyPress(Key);
et ensuite on gère ce qui doit être gérer ...
on pourrait donc reprendre toutes les procédures ,hériter la classe de base ,puis faire autre chose dans chacun des événements ,c'est ce qui est conseillé ...
nb:pour tester l'unité doit-être ajouter dans les uses du projet et l'objet doit-être créé dynamiquement ,ça évite de réinstaller le composant à chaque modifications...