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