Salut tout le monde,
je voudrais savoir comment je pourrais optimiser ce petit bout de code...

Je vous plante le tableau: j'utilise une TTreeView qui posséde une profondeur de 4 nodes.

Quand je fait la création d'une node je lui adjoint un object

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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
type
  Tproduit=class
  private
    Id:Word;
  end;
 
  TFamille=class
  private
    Id:Word;
  end;
 
  TEtape=class
  private
    Id:string;
  end;
 
  TMachine=class
  private
    Id:Word;
  end;
 
 
  procedure CreateNoeudProduit;
  begin
    Temp:=Tproduit.Create;
    Tproduit(Temp).Id:=MyQuery1.Fields[0].value;
    NoeudProduit:=_treeView.items.AddChildObject(noeud,
      MyQuery1.Fields[1].value,Temp);
  end;
 
  procedure CreateNoeudFamille;
  begin
    Temp:=TFamille.Create;
    TFamille(Temp).Id:=MyQuery1.Fields[2].value;
    NoeudFamille:=_treeView.items.AddChildObject(NoeudProduit,
      MyQuery1.Fields[3].value,Temp);
  end;
 
  procedure CreateNoeudEtape;
  begin
    Temp:=TEtape.Create;
    TEtape(Temp).Id:=MyQuery1.Fields[4].value;
    NoeudEtape:=_treeView.items.AddChildObject(NoeudFamille,
      MyQuery1.Fields[5].value,Temp);
  end;
 
  procedure CreateNoeudMachine;
  begin
    Temp:=TMachine.Create;
    TMachine(Temp).Id:=MyQuery1.Fields[6].value;
    _treeView.items.AddChildObject(NoeudEtape,
      MyQuery1.Fields[7].value,Temp);
  end;
quand je fais la sélection du node je me base sur le type de classe pour savoir ce que je dois faire:


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
16
17
18
19
20
21
22
23
24
25
26
procedure TFrmMetroOffset._treeViewChange(Sender: TObject; Node: TTreeNode);
begin
  inherited;
  if assigned(node.data) then //Est ce qu'on object est assigné ?
  begin
    if TObject(node.data).ClassType=Tproduit then
      showmessage('Produit');
 
    if TObject(node.data).ClassType=TFamille then
      showmessage('Famille');
 
    if TObject(node.data).ClassType=TEtape then
      showmessage('Etape');
 
 
    if TObject(node.data).ClassType=TMachine then
    begin
      showmessage(
      'Produit '+inttostr(Tproduit(node.Parent.Parent.Parent.data).Id)+#13#10+
      'Famille '+inttostr(TFamille(node.Parent.Parent.data).Id)+#13#10+
      'Etape '+TEtape(node.Parent.data).Id+#13#10+
      'Machine '+inttostr(TMachine(node.data).Id)
      );
    end;
  end;
end;
Ma question est : Comment je pourrais faire pour remplacer mes If par un case ?