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
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
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;
Ma question est : Comment je pourrais faire pour remplacer mes If par un case ?
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;
Partager