There are a couple of ways. First is to extend the test inside the loop --

if app.LayoutPraticiens.Control(i) isa MyEditField then
      MyEditField(app.LayoutPraticiens.Control(i)).raz
elseif app.LayoutPraticiens.Control(i) isa MyPopupMenu then
      MyPopupMenu(app.LayoutPraticiens.Control(i)).raz
else


A second way would be to define a class interface that declares raz, and implement it in both MyEditField and MyPopupMenu. Then the innards of your loop would be as follows.

if app.LayoutPraticiens.Control(i) isa Interface1 then
      Interface1(app.LayoutPraticiens.Control(i)).raz


Charles Yeomans






On Dec 23, 2006, at 12:46 PM, Youri wrote:


Thank you it works perfectly ;-)

To answer to Andy, raz is a method of my Class "MyEditfield". Therefore the 1st version to cast in a "vanilla" Editfield didn't work.


Another question in the same flavour is coming now to my mind :

I also have a "PopupMenu" control (for the gender) to which I would like to apply the same treatment as the MyEditField.

I have now the solution to Subclass Popumenu and make it a MyPopupmenu with a raz method, but I would have to loop for MyEditfields and a second time for Mypopupmenus after. Is there a way to loop throught my controls and detect on the fly Myditfield and Mypopupmenus and trigger the raz method?


TIA,


Youri





Tom Benson wrote:
Woudn't you need to cast it as a MyEditField (rather than a vanilla Editfield) in order to trigger a custom method..
ie.
if app.LayoutPraticiens.Control(i) isa MyEditField then
      MyEditField(app.LayoutPraticiens.Control(i)).raz
- Tom
On 23/12/2006, at 10:09 AM, Charles Yeomans wrote:

On Dec 22, 2006, at 6:05 PM, Youri wrote:



Hi,


I have in a Container Control some myEditField (custom class with a raz method). I simply want to loop throught all control, test if it is a MyEditField, if so trigger the raz method of this control. I'm using the following code which fails :


  dim n, i as Integer
  dim s as MyEditField


  n = app.LayoutPraticiens.ControlCount - 1

  for i = 0 to (n-1)

    if app.LayoutPraticiens.Control(i) isa MyEditField then
      EditField(app.LayoutPraticiens.Control(i)).raz

Rewrite it as above.

Charles Yeomans
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>
Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>

_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives of this list here:
<http://support.realsoftware.com/listarchives/lists.html>

Reply via email to