Ik heb momenteel een een treeview met hoofdstappen en substappen. Deze hebben beide een status (in behandeling of afgehandeld)
-Hoofdstap1
--- Substap1
--- Substap2
-Hoofdstap2
Hoe kan ik er voor zorgen dat na het updaten van een status de laatst gebruikte node weer de focus krijgt. En/Of de hoofdstap expanded is.
Dus stel dat ik Substap2 update (status wordt afgehandeld. substap2 wordt dan groen).
Echter na de refresh ziet m'n tree er dan zo uit
+Hoofdstap1
-Hoofdstap2
ipv
-Hoofdstap1
---Substap1
---Substap2
-Hoofdstap2
Na het updaten van de status Clear ik de treeview en teken ik de tree opnieuw
Hieronder de procedure die ik aanroep. Ik maak ook gebruik van tNode.data, maar die heb ik er uit gehaald.
-Hoofdstap1
--- Substap1
--- Substap2
-Hoofdstap2
Hoe kan ik er voor zorgen dat na het updaten van een status de laatst gebruikte node weer de focus krijgt. En/Of de hoofdstap expanded is.
Dus stel dat ik Substap2 update (status wordt afgehandeld. substap2 wordt dan groen).
Echter na de refresh ziet m'n tree er dan zo uit
+Hoofdstap1
-Hoofdstap2
ipv
-Hoofdstap1
---Substap1
---Substap2
-Hoofdstap2
Na het updaten van de status Clear ik de treeview en teken ik de tree opnieuw
Hieronder de procedure die ik aanroep. Ik maak ook gebruik van tNode.data, maar die heb ik er uit gehaald.
code:
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
| procedure TfrmCalamStappen.prCalamiteitStappen(_iCalamiteitID : Integer);
var
node, subnode : TTreeNode;
pSerDocRec : Pointer;
begin
treeCalamStappen.Items.Clear;
treeCalamStappen.Items.BeginUpdate;
//============================================================================
// Calamiteithoofdstappen -en substappen plaatsen in treeview
//============================================================================
iCalamiteitID := _iCalamiteitID;
dmSpo003.qryCalamiteitHoofdStappen.ParamByName('CLT_ID').Value := iCalamiteitID;
dmSpo003.qryCalamiteitHoofdStappen.Open;
dmSpo003.qryCalamiteitHoofdStappen.First;
while not dmSpo003.qryCalamiteitHoofdStappen.Eof do
begin
node := treeCalamStappen.Items.AddChildObject(nil, dmSpo003.qryCalamiteitHoofdStappen.FieldByName('CALAMITEITHOOFDSTAP').asstring, pSerDocRec);
dmSpo003.qrySubstappen.ParamByName('CHP_ID').Value := dmSpo003.qryCalamiteitHoofdStappen.FieldByName('CHP_ID').AsInteger;
dmSpo003.qrySubstappen.Open;
dmSpo003.qrySubstappen.First;
// Subnodes aanmaken
while not dmSpo003.qrySubstappen.Eof do
begin
subnode := treeCalamStappen.Items.AddChildObject(node, dmSpo003.qrySubstappen.FieldByName('CALAMITEITSUBSTAP').asstring, PSerDocRec);
subnode.data := TNodeData.Create;
dmSpo003.qrySubstappen.Next;
end;
dmSpo003.qrySubstappen.Close;
dmSpo003.qryCalamiteitHoofdStappen.next;
end;
dmSpo003.qryCalamiteitHoofdStappen.Close;
treeCalamStappen.Items.EndUpdate;
end; |