diff options
author | graemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf> | 2008-07-08 18:32:37 +0000 |
---|---|---|
committer | graemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf> | 2008-07-08 18:32:37 +0000 |
commit | e851441ed3e008059c3f5c02cbe03392d8179109 (patch) | |
tree | 303960b009dd3668116ecc98e66e54dc1d1c6a94 /src/gui | |
parent | c6d2b8ec732465b7dc82bc15994d7cb24c82bf50 (diff) | |
download | fpGUI-e851441ed3e008059c3f5c02cbe03392d8179109.tar.xz |
* Added a new FindSubNode method to TfpgTreeNode.
* Implemented more of the FPCUnit GUI Test Runner. We now have a working test runner, but I still have much to do.
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/gui_tree.pas | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/src/gui/gui_tree.pas b/src/gui/gui_tree.pas index 5865f50f..db6e9e33 100644 --- a/src/gui/gui_tree.pas +++ b/src/gui/gui_tree.pas @@ -50,6 +50,11 @@ type next: PfpgTreeColumnWidth; width: word; end; + + // forward declaration + TfpgTreeNode = class; + + TfpgTreeNodeFindMethod = procedure(ANode: TfpgTreeNode; var AFound: boolean) of object; TfpgTreeNode = class(TObject) @@ -84,7 +89,8 @@ type function AppendText(AText: string): TfpgTreeNode; function Count: integer; function CountRecursive: integer; - function FindSubNode(AText: string; ARecursive: Boolean): TfpgTreeNode; + function FindSubNode(AText: string; ARecursive: Boolean): TfpgTreeNode; overload; + function FindSubNode(ATreeNodeFindMethod: TfpgTreeNodeFindMethod): TfpgTreeNode; overload; function GetMaxDepth: integer; function GetMaxVisibleDepth: integer; procedure Append(aValue: TfpgTreeNode); @@ -416,6 +422,35 @@ begin end; { if/else } end; +function TfpgTreeNode.FindSubNode(ATreeNodeFindMethod: TfpgTreeNodeFindMethod): TfpgTreeNode; +var + lFound: Boolean; + h: TfpgTreeNode; +begin + result := nil; + lFound := False; + if not Assigned(ATreeNodeFindMethod) then + Exit; //==> + + h := FirstSubNode; + while h <> nil do + begin + ATreeNodeFindMethod(h, lFound); + if lFound then + begin + result := h; + Exit; //==> + end; + if h.Count > 0 then + begin + result := h.FirstSubNode.FindSubNode(ATreeNodeFindMethod); + if result <> nil then + Exit; //==> + end; + h := h.next; + end; +end; + function TfpgTreeNode.AppendText(AText: string): TfpgTreeNode; var h: TfpgTreeNode; |