1 unit VTLogger;
2 
3 {$mode objfpc}{$H+}
4 
5 interface
6 
7 uses
8   LCLLogger, MultiLog;
9 
10 const
11   lcAll = [0,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];
12   lcDebug = 0;
13   lcError = 1;
14   lcInfo = 2;
15   lcWarning = 3;
16   lcEvents = 4;
17   //reserved
18   lcUser = 8;
19 
20   lcVTEvents = lcUser + 1;
21   lcPaint = lcUser + 2;
22   lcPaintHeader = lcUser + 3;
23   lcDummyFunctions = lcUser + 4;
24   lcMessages = lcUser + 5;
25   lcPaintSelection = lcUser + 6;
26   lcSetCursor = lcUser + 7;//it generates a lot of messages. so it will be debugged alone
27   lcPaintBitmap = lcUser + 8;
28   lcScroll = lcUser + 8;
29   lcPaintDetails = lcUser + 9;
30   lcCheck = lcUser + 10;
31   lcEditLink = lcUser + 11;
32   lcEraseBkgnd = lcUser + 12;
33   lcColumnPosition = lcUser + 13;
34   lcTimer = lcUser + 14;
35   lcDrag = lcUser + 15;
36   lcOle = lcUser + 16;
37   lcPanning = lcUser + 17;
38   lcHeaderOffset = lcUser + 18;
39   lcSelection = lcUser + 19;
40   lcAlphaBlend = lcUser + 20;
41   lcHint = lcUser + 21;
42   lcMouseEvent = lcUser + 22;
43 
44   lcVT = [lcEvents..lcMouseEvent];
45 
46 var
47   Logger: TLCLLogger;
48 
49 
GetSelectedNodesnull50   function GetSelectedNodes(Sender: TLogger; Data: Pointer; var DoSend: Boolean): String;
51 
52 implementation
53 
54 uses
55   VirtualTrees, sysutils;
56 
57 type
58   TNodeData = record
59     Title: String;
60   end;
61   PNodeData = ^TNodeData;
62 
GetSelectedNodesnull63   function GetSelectedNodes(Sender: TLogger; Data: Pointer; var DoSend: Boolean): String;
64   var
65     i: Integer;
66     TempNode: PVirtualNode;
67   begin
68     with TBaseVirtualTree(Data) do
69     begin
70       Result:='SelectedCount: '+IntToStr(SelectedCount)+LineEnding;
71       TempNode:=GetFirstSelected;
72       if TempNode = nil then exit;
73       Result:=Result+PNodeData(GetNodeData(TempNode))^.Title+LineEnding;
74       for i:= 1 to SelectedCount -1 do
75       begin
76         TempNode:=GetNextSelected(TempNode);
77         Result:=Result+PNodeData(GetNodeData(TempNode))^.Title+LineEnding;
78       end;
79     end;
80   end;
81 
82 
83 initialization
84   Logger:=TLCLLogger.Create;
85 finalization
86   Logger.Free;
87 end.
88 
89