summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorgraemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf>2008-07-08 18:32:37 +0000
committergraemeg <graemeg@ae50a9b5-8222-0410-bf8d-8a13f76226bf>2008-07-08 18:32:37 +0000
commite851441ed3e008059c3f5c02cbe03392d8179109 (patch)
tree303960b009dd3668116ecc98e66e54dc1d1c6a94 /src/gui
parentc6d2b8ec732465b7dc82bc15994d7cb24c82bf50 (diff)
downloadfpGUI-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.pas37
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;