Bonjour,
Je suis sous W10 avec Delphi 6 PE et j'utilise ldes contrôles Unicode suivants:
J'essaie d'ajouter programmatiquement un évènement OnChange à un objet TTntTreeView que j'ai également créé programmatiquement.
Je définis mon objet TntTreeView de la manière suivante:
Je définis mes routines OnClick et OnChange de la manière suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 type TMyTntTreeView = class(TPanel) private MyTreeView: TTntTreeView; published Constructor Create(AOwner: TComponent); Destructor Destroy; override; end;
Voici le code de ces routines:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 type TUnicodeObject = class(TWinControl) class procedure Click(Sender: TObject); class procedure TVChange(Sender: TObject; Node: TTntTreeNode); end;
Voici le constructor et destructor de l'objet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class procedure TUnicodeObject.Click(Sender: TObject); begin // ici, reaction pour un clic dans l'objet end; class procedure TUnicodeObject.TVChange(Sender: TObject; Node: TTntTreeNode); begin // ici, réaction pour un changement dans un noeud de l'objet end;
Et voici comment je crée l'objet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Constructor TMyTntTreeView.Create(AOwner: TComponent); begin inherited; ParentWindow := UnicodeParentWindow; MyTreeView := TTntTreeView.Create(self); MyTreeView.ParentWindow := self.Handle; self.Width := MyTreeView.Width; self.Height := MyTreeView.Height; end; Destructor TMyTntTreeView.Destroy; begin MyTreeView.Free; inherited; end;
Or, à la compilation, j'obtiens ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Obj := TMyTntTreeView.Create(nil); TMyTntTreeView(Obj).ParentWindow := hnd; TMyTntTreeView(Obj).MyTreeView.OnClick := TUnicodeObject.Click; TMyTntTreeView(Obj).MyTreeView.OnChange := TUnicodeObject.TVChange; // <===== iei, erreur e compilation
Si je désactive la ligne avec OnChange, la compialtion passe, le programme est généré correctement et il fonctionne.
Il crée proprement mon objet TMyTntTreeView, l'affiche dans la destinatioin voulue et réagit à l'évènement OnClick en cliquant dedans.
On dirait le l'évènement OnChange de MyTreeView atteMyTreeView est boen nt un TTreeNode comme second paramètre.
Or, MyTreeView est bien un TTntTreeView et la classe TTntTreeNode existe dans l'unité TTntTreeView.
Auriez-vous une idée comment résoudre ce problème ? Ai-ce mal compris ? Est-ce un bug ?
P.S.
Exactement la même technique fonctionne pour un TTntEdit, TTntMemo et un TTntComboBox, avec évidemment une procédure OnChange dans le format d'un simple TNotifyEvent.
EDIT
D'ailleurs, le problème va plus loin. J'ai l'impression que le composant TTntTreeView n'est pas "fini'.
Par exemple, il y a bien une classe TTntTreeNode,mais la méthode Select de TTntTreeView attend un TTreeNode, mais pas un TTntTreeNode.
Conséquence: erreur en exécution.
Est-ce que je m'en sers mal ou est-ce que j'utilise unne version dépassée ? sur le site du téléchargement, il était indiqué qu'il s'agissait de la dernière version: Version: 2.3.0
Partager