Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5
Default Why doesn't this function return TRUE?

Hi RBS,

For one thing:

Instead of
Call CheckMissingTicks(nodChild, intDepth + 1)
put
CheckMissingTicks=CheckMissingTicks(nodChild, intDepth +
1)

Don't know if it solves all your problems.

Regards,

Daniel M.

"RB Smissaert" wrote in message
...
Using Excel XP.
Made a function (from an example pointed out by Tom Ogilvy) that checks

for
missing ticked checkboxes in a Treeview.
It should return TRUE if a particular node is found (with a particular
image) and no ticks have been found yet.
The function does work when I check it with a messagebox, but it still
returns FALSE when it should be TRUE.
This is the function:

Function CheckMissingTicks(ByRef nodCurrent As Node, _
ByVal intDepth As Integer) As Boolean

Dim nodChild As Node
Dim HasTick As Boolean

If nodCurrent.Children 0 Then
For Each nodChild In MainForm.TreeView1.Nodes
If Not nodChild.Parent Is Nothing Then
If nodChild.Parent Is nodCurrent Then

If nodChild.Checked = True And _
Not nodChild.Image = 9 Then
HasTick = True
End If

If HasTick = False And _
nodChild.Image = 9 Then
'collection node, but no tick found yet
CheckMissingTicks = True
Exit Function
End If

Call CheckMissingTicks(nodChild, intDepth + 1)
End If
End If
Next nodChild
End If

End Function


And this is how the function is called:

If CheckMissingTicks(TreeView1.Nodes(1), 0) = True Then .............


I solved it for now by declaring a variable that will be true if the
particular conditions are met and checking for this variable, but I am

just
puzzled by what is wrong here. Most likely I am overlooking something

really
simple and somebody could help me out easily.


RBS




  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default Why doesn't this function return TRUE?

Thanks, it works fine now.
Used Daniel's suggestion as it is a bit shorter.
Wasn't sure about the Call keyword, but it was used in the example I
mentioned.

RBS


"Daniel.M" wrote in message
...
Hi RBS,

For one thing:

Instead of
Call CheckMissingTicks(nodChild, intDepth + 1)
put
CheckMissingTicks=CheckMissingTicks(nodChild, intDepth +
1)

Don't know if it solves all your problems.

Regards,

Daniel M.

"RB Smissaert" wrote in message
...
Using Excel XP.
Made a function (from an example pointed out by Tom Ogilvy) that checks

for
missing ticked checkboxes in a Treeview.
It should return TRUE if a particular node is found (with a particular
image) and no ticks have been found yet.
The function does work when I check it with a messagebox, but it still
returns FALSE when it should be TRUE.
This is the function:

Function CheckMissingTicks(ByRef nodCurrent As Node, _
ByVal intDepth As Integer) As Boolean

Dim nodChild As Node
Dim HasTick As Boolean

If nodCurrent.Children 0 Then
For Each nodChild In MainForm.TreeView1.Nodes
If Not nodChild.Parent Is Nothing Then
If nodChild.Parent Is nodCurrent Then

If nodChild.Checked = True And _
Not nodChild.Image = 9 Then
HasTick = True
End If

If HasTick = False And _
nodChild.Image = 9 Then
'collection node, but no tick found yet
CheckMissingTicks = True
Exit Function
End If

Call CheckMissingTicks(nodChild, intDepth + 1)
End If
End If
Next nodChild
End If

End Function


And this is how the function is called:

If CheckMissingTicks(TreeView1.Nodes(1), 0) = True Then .............


I solved it for now by declaring a variable that will be true if the
particular conditions are met and checking for this variable, but I am

just
puzzled by what is wrong here. Most likely I am overlooking something

really
simple and somebody could help me out easily.


RBS





  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Why doesn't this function return TRUE?

It may be shorter to write, but it doesn't exit your function as soon as a
True condition is encountered so you could continue to loop and do needless
checks - thus shorter to write, longer to execute.

Regards,
Tom Ogilvy




RB Smissaert wrote in message
...
Thanks, it works fine now.
Used Daniel's suggestion as it is a bit shorter.
Wasn't sure about the Call keyword, but it was used in the example I
mentioned.

RBS


"Daniel.M" wrote in message
...
Hi RBS,

For one thing:

Instead of
Call CheckMissingTicks(nodChild, intDepth + 1)
put
CheckMissingTicks=CheckMissingTicks(nodChild, intDepth

+
1)

Don't know if it solves all your problems.

Regards,

Daniel M.

"RB Smissaert" wrote in message
...
Using Excel XP.
Made a function (from an example pointed out by Tom Ogilvy) that

checks
for
missing ticked checkboxes in a Treeview.
It should return TRUE if a particular node is found (with a particular
image) and no ticks have been found yet.
The function does work when I check it with a messagebox, but it still
returns FALSE when it should be TRUE.
This is the function:

Function CheckMissingTicks(ByRef nodCurrent As Node, _
ByVal intDepth As Integer) As Boolean

Dim nodChild As Node
Dim HasTick As Boolean

If nodCurrent.Children 0 Then
For Each nodChild In MainForm.TreeView1.Nodes
If Not nodChild.Parent Is Nothing Then
If nodChild.Parent Is nodCurrent Then

If nodChild.Checked = True And _
Not nodChild.Image = 9 Then
HasTick = True
End If

If HasTick = False And _
nodChild.Image = 9 Then
'collection node, but no tick found yet
CheckMissingTicks = True
Exit Function
End If

Call CheckMissingTicks(nodChild, intDepth + 1)
End If
End If
Next nodChild
End If

End Function


And this is how the function is called:

If CheckMissingTicks(TreeView1.Nodes(1), 0) = True Then .............


I solved it for now by declaring a variable that will be true if the
particular conditions are met and checking for this variable, but I am

just
puzzled by what is wrong here. Most likely I am overlooking something

really
simple and somebody could help me out easily.


RBS







  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5
Default Why doesn't this function return TRUE?

Tom, RBS,

Agreed.

More than that, it will continue and potentialy find other Nodes (in the For
Each) for which the call to CheckMissingTicks=CheckMissingTicks(nodChild,
intDepth +1) will return False, thus overwriting a True previously found.
So, apart of the speed issue, I think you SHOULD exit.

That being said, the key issue here is in understanding :
"It should return TRUE if a particular node is found (with a particular
image) and no ticks have been found yet."

What the 'yet' means? What is the ORDER (pre-order, post-order) of the tree
traversal?

I've never used the Treeview control (so beware! ;-)) but I don't understand
why you would do an all nodes search "For each" loop (recall that ALL the
nodes, not level by level, are counted with the current "For each") and then
include a recursive call in it.

I'm sure there is a way to optimize this search if the OP explains what he
means by 'no ticks have been found yet'. If this is what I think, the OP
doesn't need the recursive call at all.

Regards,

Daniel M.

"Tom Ogilvy" wrote in message
...
It may be shorter to write, but it doesn't exit your function as soon as a
True condition is encountered so you could continue to loop and do

needless
checks - thus shorter to write, longer to execute.

Regards,
Tom Ogilvy




RB Smissaert wrote in message
...
Thanks, it works fine now.
Used Daniel's suggestion as it is a bit shorter.
Wasn't sure about the Call keyword, but it was used in the example I
mentioned.

RBS


"Daniel.M" wrote in message
...
Hi RBS,

For one thing:

Instead of
Call CheckMissingTicks(nodChild, intDepth + 1)
put
CheckMissingTicks=CheckMissingTicks(nodChild,

intDepth
+
1)

Don't know if it solves all your problems.

Regards,

Daniel M.

"RB Smissaert" wrote in message
...
Using Excel XP.
Made a function (from an example pointed out by Tom Ogilvy) that

checks
for
missing ticked checkboxes in a Treeview.
It should return TRUE if a particular node is found (with a

particular
image) and no ticks have been found yet.
The function does work when I check it with a messagebox, but it

still
returns FALSE when it should be TRUE.
This is the function:

Function CheckMissingTicks(ByRef nodCurrent As Node, _
ByVal intDepth As Integer) As Boolean

Dim nodChild As Node
Dim HasTick As Boolean

If nodCurrent.Children 0 Then
For Each nodChild In MainForm.TreeView1.Nodes
If Not nodChild.Parent Is Nothing Then
If nodChild.Parent Is nodCurrent Then

If nodChild.Checked = True And _
Not nodChild.Image = 9 Then
HasTick = True
End If

If HasTick = False And _
nodChild.Image = 9 Then
'collection node, but no tick found yet
CheckMissingTicks = True
Exit Function
End If

Call CheckMissingTicks(nodChild, intDepth + 1)
End If
End If
Next nodChild
End If

End Function


And this is how the function is called:

If CheckMissingTicks(TreeView1.Nodes(1), 0) = True Then

..............


I solved it for now by declaring a variable that will be true if the
particular conditions are met and checking for this variable, but I

am
just
puzzled by what is wrong here. Most likely I am overlooking

something
really
simple and somebody could help me out easily.


RBS








  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 27,285
Default Why doesn't this function return TRUE?

I had the same two thoughts. I noted that the function never set the value
to false, but overlooked the fact that it implicitly returned false when a
true condition was not found, so it is as you state.

I haven't used a treeview either, and I noted as well the check about
parent - indicating that the loop was around all nodes, but did't know what
is in that collection, so I didn't raise that. If this routine came from my
suggestion as he indicated, I just provided a link to a book that provided
the code.

---- < my post with the link -----
See this link:

http://www.nuvisionmiami.com/books/vb6/files/ch03.pdf

go to section 3.4.3 on page 25 of 48.


------------------------

In Visual Basic Controls in a Nutshell - Evan s. Dictor, he says all items
are nodes and thus members of the nodes collection.

I didn't go back and check the above reference, but I suspect the recursive
approach is provided for traversing the structure of the control and as you
suggest, to just check all nodes for a condition, as RB is doing, a simple
loop through the collection of nodes would be sufficient.



--
Regards,
Tom Ogilvy



Daniel.M wrote in message
...
Tom, RBS,

Agreed.

More than that, it will continue and potentialy find other Nodes (in the

For
Each) for which the call to CheckMissingTicks=CheckMissingTicks(nodChild,
intDepth +1) will return False, thus overwriting a True previously found.
So, apart of the speed issue, I think you SHOULD exit.

That being said, the key issue here is in understanding :
"It should return TRUE if a particular node is found (with a particular
image) and no ticks have been found yet."

What the 'yet' means? What is the ORDER (pre-order, post-order) of the

tree
traversal?

I've never used the Treeview control (so beware! ;-)) but I don't

understand
why you would do an all nodes search "For each" loop (recall that ALL the
nodes, not level by level, are counted with the current "For each") and

then
include a recursive call in it.

I'm sure there is a way to optimize this search if the OP explains what he
means by 'no ticks have been found yet'. If this is what I think, the OP
doesn't need the recursive call at all.

Regards,

Daniel M.

"Tom Ogilvy" wrote in message
...
It may be shorter to write, but it doesn't exit your function as soon as

a
True condition is encountered so you could continue to loop and do

needless
checks - thus shorter to write, longer to execute.

Regards,
Tom Ogilvy




RB Smissaert wrote in message
...
Thanks, it works fine now.
Used Daniel's suggestion as it is a bit shorter.
Wasn't sure about the Call keyword, but it was used in the example I
mentioned.

RBS


"Daniel.M" wrote in message
...
Hi RBS,

For one thing:

Instead of
Call CheckMissingTicks(nodChild, intDepth + 1)
put
CheckMissingTicks=CheckMissingTicks(nodChild,

intDepth
+
1)

Don't know if it solves all your problems.

Regards,

Daniel M.

"RB Smissaert" wrote in message
...
Using Excel XP.
Made a function (from an example pointed out by Tom Ogilvy) that

checks
for
missing ticked checkboxes in a Treeview.
It should return TRUE if a particular node is found (with a

particular
image) and no ticks have been found yet.
The function does work when I check it with a messagebox, but it

still
returns FALSE when it should be TRUE.
This is the function:

Function CheckMissingTicks(ByRef nodCurrent As Node, _
ByVal intDepth As Integer) As Boolean

Dim nodChild As Node
Dim HasTick As Boolean

If nodCurrent.Children 0 Then
For Each nodChild In MainForm.TreeView1.Nodes
If Not nodChild.Parent Is Nothing Then
If nodChild.Parent Is nodCurrent Then

If nodChild.Checked = True And _
Not nodChild.Image = 9 Then
HasTick = True
End If

If HasTick = False And _
nodChild.Image = 9 Then
'collection node, but no tick found yet
CheckMissingTicks = True
Exit Function
End If

Call CheckMissingTicks(nodChild, intDepth + 1)
End If
End If
Next nodChild
End If

End Function


And this is how the function is called:

If CheckMissingTicks(TreeView1.Nodes(1), 0) = True Then

.............


I solved it for now by declaring a variable that will be true if

the
particular conditions are met and checking for this variable, but

I
am
just
puzzled by what is wrong here. Most likely I am overlooking

something
really
simple and somebody could help me out easily.


RBS












Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to return a number instead of true/false with an if function? charles New Users to Excel 3 October 1st 09 07:50 AM
Search for 2 true arguments and return true or false David Excel Discussion (Misc queries) 3 July 15th 06 10:18 AM
How do I make the true return a drop down list in the IF function? Brian Excel Worksheet Functions 5 April 13th 06 09:40 PM
Function to return True/False if all are validated as True by ISNU Tetsuya Oguma Excel Worksheet Functions 2 March 15th 06 10:28 AM
Create a function to return text if two logical functions are true janeyt Excel Worksheet Functions 2 March 19th 05 08:49 PM


All times are GMT +1. The time now is 11:33 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"