Bonjour,

Je suis sous W10 avec Delphi 6 PE et j'utilise ldes contrôles Unicode suivants:
Tnt Delphi Unicode Controls
http://www.tntware.com/delphicontrols/unicode/
Version: 2.3.0
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:
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;
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
type
  TUnicodeObject = class(TWinControl)
    class procedure Click(Sender: TObject);
    class procedure TVChange(Sender: TObject; Node: TTntTreeNode);
  end;
Voici le code de ces routines:
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;
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
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;
Et voici comment je crée l'objet:
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
Or, à la compilation, j'obtiens ceci:
Nom : aa1.png
Affichages : 174
Taille : 13,7 Ko

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