Hoi,
Ik heb een probleem met een treeview component in delphi 6. Ik bouw deze runtime op. Dat gaat allemaal goed, echter de icoontjes die ik er aan assign worden niet altijd goed getoond.
Als je een Node selecteert neemt hij altijd ImageIndex := 0 aan. Ook als je verder door de boom heen wandelt gaan alle images van de bovenliggende node op ImageIndex := 0 staan.
Hieronder zet ik maar een stuk code neer, het opbouwen werkt dus. Het is echter ter illustratie hoe ik de ImageIndex set.
Mijn vraag is dus: Hoe kan ik voorkomen dat de plaatjes verspringen als ik de nodes selecteer.
Ik gebruik delphi 6.
Alvast bedankt!
Ik heb een probleem met een treeview component in delphi 6. Ik bouw deze runtime op. Dat gaat allemaal goed, echter de icoontjes die ik er aan assign worden niet altijd goed getoond.
Als je een Node selecteert neemt hij altijd ImageIndex := 0 aan. Ook als je verder door de boom heen wandelt gaan alle images van de bovenliggende node op ImageIndex := 0 staan.
Hieronder zet ik maar een stuk code neer, het opbouwen werkt dus. Het is echter ter illustratie hoe ik de ImageIndex set.
Mijn vraag is dus: Hoe kan ik voorkomen dat de plaatjes verspringen als ik de nodes selecteer.
Ik gebruik delphi 6.
Alvast bedankt!
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
36
37
38
39
40
41
42
43
44
45
46
47
| procedure VulKlanten ( Boom : TTreeView ; Node : TTreeNode ; dm : TdmMRS );
var
huidigeKlant, huidigProject, huidigeFase : TTreeNode;
klantNaam : string;
projectCode : string;
begin
huidigProject := nil;
if dm.CDSKlantProject.Active then
dm.CDSKlantProject.Close;
dm.CDSKlantProject.Params[0].AsString:='MKR';
dm.CDSKlantProject.Open;
try
dm.CDSKlantProject.First;
while not dm.CDSKlantProject.Eof do
begin
// Als het een klant is die we nog niet hebben gezien maken we een nieuwe node aan
if klantNaam <> dm.CDSKlantProject.FieldByName('RELATIE_CODE').AsString then
begin
klantNaam := dm.CDSKlantProject.FieldByName('RELATIE_CODE').AsString;
huidigeKlant := Boom.Items.AddChild(Node,dm.CDSKlantProject.FieldByName('RELATIE_CODE').AsString);
huidigeKlant.ImageIndex := 4;
end;
// Als het een project is die we nog niet hebben gezien maken we een nieuwe node aan
if projectCode <> dm.CDSKlantProject.FieldByName('PROJECT_CODE').AsString then
begin
projectCode := dm.CDSKlantProject.FieldByName('PROJECT_CODE').AsString;
huidigProject := Boom.Items.AddChild(huidigeKlant,dm.CDSKlantProject.FieldByName('PROJECT_CODE').AsString);
huidigProject.ImageIndex := 3;
end;
// We vullen alleen de fases die niet leeg zijn, waarom zijn die er eigenlijk??
if dm.CDSKlantProject.FieldByName('FASE_CODE').AsString <> '' then
begin
huidigeFase := Boom.Items.AddChild(huidigProject,dm.CDSKlantProject.FieldByName('FASE_CODE').AsString);
huidigeFase.ImageIndex := 6;
end;
dm.CDSKlantProject.Next;
end;
finally
dm.CDSKlantProject.Close;
end;
end; |