Salut salut,
J'ai un problème assez bizarre, je m'explique, je suis en train de faire un composant pour pouvoir éditer la couleurs des Highlighters de SynEdit (un composant memo avec coloration syntaxique super complet) au run time (il me semblait qu'il y avait un composant comme ça déjà fournit mais je n'ai pas réussi a le retrouver :/), en clair, pouvoir changer la couleur et le style de chaque attribut (mot clé, texte, variable, ...) d'un TSynCustomHighlighter.
Donc, j'ai une classe étendu de TScrollBox, nommé TSynEditHighlighterEditor, dans laquelle je créé des TPanel colorés et TCheckBox pour aller changer directement les valeurs du TSynCustomHighlighter (couleur de fond, couleur du texte, attributs de texte).
Jusque là tout marche parfaitement.
Ensuite j'ai ajouté un événement OnChange sur mon TSynEditHighlighterEditor :
Et je souhaite lancer cet événement depuis chaque composants, de cette manière :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 private FOnChange: TNotifyEvent; ... published property OnChange:TNotifyEvent read FOnChange write FOnChange;
Sur ma fiche principale j'assigne une procedure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if Assigned(TSynEditHighlighterEditor(Parent).OnChange) then TSynEditHighlighterEditor(Parent).OnChange(self);
(le test fait "a l'arrache" sur l'évenement d'un bouton qui trainait là
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 a := TSynEditHighlighterEditor.Create(self); a.Parent := self; a.OnChange := Button1Click; a.SynEditHighlighter := SynPHPSyn1;)
Et là j'ai mon soucis, pour le premier attribut de la liste (le premier créé donc) rien ne se passe, Button1Click n'est pas appelé, pour les autres éléments de la liste j'ai "invalid floating point operation"alors qu'il n'y a rien a voir avec un float ici.
J'ai essayé de lancer l'événement directement depuis le composant lui même et ça a fonctionné.
Any ideas? merci
Ok j'ai trouvé, je me trompai dans les Parents tout simplement -_- et donc il ne trouvait pas le OnChange dans le premier Parent, mais pourquoi une erreur de float? bizarre, m'enfin résolu -_- ^^
Partager