Toon posts:

[Delphi] Virtual StringTree werkt niet goed

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik gebruik de Virtual StringTree van Mike Lischke.

Het probleem is dat ik in het begin niet met de muis midden op de tekst van de nodes kan klikken om die te selecteren. Ik moet eerst met de cursortoetsen alle node's bezocht hebben. Daarna werkt het wel goed en kan ik dus met de muis de node's selecteren.

Ik gebruik deze code:
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
  TTreeData = record
    Text: String;
  end;
  PTreeData = ^TTreeData;


var Node: PVirtualNode;
    NoteData: PTreeData;
begin
  VirtualStringTree1.NodeDataSize := SizeOf(TTreeData);

  Node := VirtualStringTree1.AddChild(nil);
  NoteData := VirtualStringTree1.GetNodeData(Node);
  NoteData.Text := 'Schap';

  Node := VirtualStringTree1.AddChild(Node);
  NoteData := VirtualStringTree1.GetNodeData(Node);
  NoteData.Text := 'Limo/bier';

  Node := VirtualStringTree1.AddChild(nil);
  NoteData := VirtualStringTree1.GetNodeData(Node);
  NoteData.Text := 'Reclame';
end;


procedure TFormArtikelBeheer.VirtualStringTree1GetText(
  Sender: TBaseVirtualTree; Node: PVirtualNode; Column: Integer;
  TextType: TVSTTextType; var Text: WideString);
var
  Data: PTreeData;
begin
  Data := Sender.GetNodeData(Node);
  if Assigned(Data) then
    Text := Data.Text;
end;

Wie weet hoe ik dit kan oplossen, zodat het dus gelijk werkt?

Verwijderd

Welke versie heb jij? Want ik zie dat jij een ander event definitie hebt dan ik.. Ik heb versie 3.1.3.

Heb je een header toegevoegd; Options hoVisible van die header op true gezet?

Wanneer voeg je de nodes toe?

Als het met de nieuwe versie nog niet lukt, moet je maar ff je dfm posten; kan ik beter zien wat de verschillen zijn.

Verwijderd

Topicstarter
Ik had per ongeluk een oude versie geinstalleerd. Nu met wel de goede versie werkt het wel.

Verwijderd

Topicstarter
Ik heb toch nog problemen ook met deze nieuwe versie.

Stel ik heb de volgende tree:
code:
1
2
3
4
5
6
7
8
9
==A
  =
  ===1
==B
  =
  ===2
==C
  =
  ===3

A, B en C zijn niet uitgeklapt. Als ik nu bijv dubbelklik op C dan selecteert die niet C en opent die die ook niet.

Kan het zijn omdat ik niet de OnInitNode gebruik om de caption van de node's te vullen?

Ik vul het nu bijvoorbeeld in OnCreate van het form:
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
procedure TFormArtikelBeheer.FormCreate(Sender: TObject);
var Node: PVirtualNode;
    NoteData: PTreeData;
begin
  with VST do
  begin
    NodeDataSize := SizeOf(TTreeData);
    RootNodeCount := 3;

    Node := GetFirst;

    NoteData := GetNodeData(Node);
    NoteData.Text := 'Schap';
    ChildCount[Node] := ChildCount[Node] + 1;
    NoteData := GetNodeData(GetNext(Node));
    NoteData.Text := 'Limo/Bier';

    NoteData := GetNodeData(GetNextSibling(Node));
    NoteData.Text := 'Reclame';
    ChildCount[GetNextSibling(Node)] := ChildCount[GetNextSibling(Node)] + 1;
    Node := GetNextSibling(Node);
    NoteData := GetNodeData(GetNext(Node));
    NoteData.Text := '11-03-2002 t/m 17-03-2002';

    NoteData := GetNodeData(GetNextSibling(Node));
    NoteData.Text := 'Demo';
    ChildCount[GetNextSibling(Node)] := ChildCount[GetNextSibling(Node)] + 1;
    Node := GetNextSibling(Node);
    NoteData := GetNodeData(GetNext(Node));
    NoteData.Text := '11-2002';
  end;
end;