FindAll by alternative properties
I am using the FindAll method to find all objects of a certain classes on a form. For example:
Object.FindAll('WndClass', 'regexp:^((Button)|(TButton)|(TcxButton)|(TdxBarButton)|(TdxLargeBarButton))$', 20);
But some of the objects that I need are not windows and do not have the WndClass property (for example, BarButtons from DevExpress). Because of this, I have to call FindAll twice, to search by WndClass and ClassName:
Object.FindAll('WndClass', 'regexp:^((Button)|(TButton)|(TcxButton))$', 20); Object.FindAll('ClassName', 'regexp:^((TdxBarButton)|(TdxLargeBarButton))$', 20);
My question is - it possible to call FindAll once to find objects of the specified alternative properties satisfies the condition. Something like this:
Object.FindAll('WndClass|ClassName', 'regexp:^((Button)|(TButton)|(TcxButton)|(TdxBarButton))$', 20);
Would be grateful for any advice.
Solved! Go to Solution.
When passing arrays of properties/values to FindAll, it will search by matching each property to each value. That is, FindAll(['WndClass', 'ClassName'], ['Button', 'TButton'], 20) will find objects that have WndClass='Button' AND ClassName='TButton'.
What I need is the ability to write something like FindAll(['WndClass', 'ClassName'], 'Button', 20) and find objects that have WndClass='Button' OR ClassName='Button'
> is - it possible to call FindAll once to find objects of the specified alternative properties
I am afraid this is not possible. If I remember it right, documentation says that 'or' condition (via regexp) can be used for property values only, but not for the property names. That is why I think that what you are looking for is not possible (at the moment, hopefully) and I do not have at the moment any better idea than two subsequent calls to .FindAll() like you do now.
/Alex [Community Hero]
[Community Heroes] are not employed by SmartBear Software but
are just volunteers who have some experience with the tools by SmartBear Software
and a desire to help others. Posts made by [Community Heroes]
may differ from the official policies of SmartBear Software and should be treated
as the own private opinion of their authors and under no circumstances as an
official answer from SmartBear Software.
The [Community Hero] signature is used with permission by SmartBear Software.