Hi Martin,

You are right the problem is was trying to avoid only exists when you
actually are questioning the
objects for instance using ObjectInfo() etc.

Thanks for clarifying this !

Peter
------------------------------------------------------------------------------------------------
Peter Horsb�ll M�ller, GIS Udviklingskonsulent / GIS-Developer
Kampsax A/S - GIS Software & Solutions
Rugaardsvej 55, 5000 Odense, DK
tel: +45 6313 5013,  dir:+45 6313 5008,  fax: +45 6313 5090
mailto:[EMAIL PROTECTED]
www.kampsax-gis.dk and www.kampsax.dk
Authorized MapInfo Partner & Distributor in Denmark and Norway.
------------------------------------------------------------------------------------------------
Se mere om Dansk MapInfo Brugerkonference p� 
http://www.kampsax-gis.dk/Default.asp?ID=296

Klik ind p� http://www.kortal.dk og se det hele lidt fra oven!
Check http://www.kortal.dk and have a look at Denmark from above!


                                                                                       
                                        
                    Martin Roundill                                                    
                                        
                    <Martin.Roundill@waitaker        Til:    "'[EMAIL PROTECTED]'" 
<[EMAIL PROTECTED]>,                              
                    e.govt.nz>                       [EMAIL PROTECTED] 
                                        
                                                     cc:     [EMAIL PROTECTED]  
                                        
                    02-08-2002 09:19                 Vedr.:  RE: MI-L MB - Select with 
object variables                        
                                                                                       
                                        
                                                                                       
                                        



Hi Peter,

You would not need to use the "Select * From s_Layer Where OBJ Into
EXISTING__OBJ NoSelect" query  as your second statement will only return
records that have objects associated with them therefore making the above
clause redundant.

Cheers

Martin


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Sent: Friday, 02 August 2002 18:22
To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Subject: RE: MI-L MB - Select with object variables


Hi Peter,

Here is my version of your IsLayerVisible()

****************************************************************************

*********
Function LayerIsVisible(ByVal WinID as integer, ByVal s_Layer as string) as
logical

Dim  Mx1, Mx2, My1, My2 as float,
     o_Rectangle as object

LayerIsVisible = FALSE

     '**I have added the Set Coordsys syntax
     Set CoordSys Window WinID
     Mx1 = MapperInfo(WinID, MAPPER_INFO_MINX)
     My1 = MapperInfo(WinID, MAPPER_INFO_MINY)
     Mx2 = MapperInfo(WinID, MAPPER_INFO_MAXX)
     My2 = MapperInfo(WinID, MAPPER_INFO_MAXY)

     Create Rect Into Variable o_Rectangle
                (Mx1, My1) (Mx2, My2)

     '**If you are not sure whether you might have records without
     '**objects you might be interested in starting with this SQL
     Select * From s_Layer
          Where OBJ
          Into EXISTING__OBJ NoSelect

     '**If you use the SQL above change the s_Layer to EXISTING__OBJ
     '**Selection objects from current layers within current vindow area
     Select * From s_Layer
          Where OBJ Intersects o_Rectangle
          Into VISIBLE__OBJ NoSelect

     If TableInfo("VISIBLE__OBJ", TAB_INFO_NROWS) > 0 then
          LayerIsVisible = TRUE
     end if

End Function
****************************************************************************

*********

You might also move the extraction of the coordinates and the creation of
your o_Rectangle on level up, so
that you only have to create this object once for every Map window. You can
then send the object to the
LayerIsVisible procedure as a parameter in stead of the window id.

HTH,
Peter
----------------------------------------------------------------------------

--------------------
Peter Horsb�ll M�ller, GIS Udviklingskonsulent / GIS-Developer
Kampsax A/S - GIS Software & Solutions
Rugaardsvej 55, 5000 Odense, DK
tel: +45 6313 5013,  dir:+45 6313 5008,  fax: +45 6313 5090
mailto:[EMAIL PROTECTED]
www.kampsax-gis.dk and www.kampsax.dk
Authorized MapInfo Partner & Distributor in Denmark and Norway.
----------------------------------------------------------------------------

--------------------
Se mere om Dansk MapInfo Brugerkonference p�
http://www.kampsax-gis.dk/Default.asp?ID=296

Klik ind p� http://www.kortal.dk og se det hele lidt fra oven!
Check http://www.kortal.dk and have a look at Denmark from above!
----- Videresendt af Peter M�ller/Kampsax - 02-08-2002 08:11 -----


                    "Peter

                    Zyczynski"              Til:
<[EMAIL PROTECTED]>
                    <peterz@insightg        cc:

                    is.com.au>              Vedr.:  MI-L MB - Select with
object variables


                    02-08-2002 03:52

                    Besvar venligst

                    til peterz








Hi all,

I'm after some ideas.

I have about 40 tables of bus routes open in a single mapper window,
some are within view, some are not.

Out of the 40 layers I need to determine which ones are actually
visible in the current mapper.  Any ideas greatly appreciated.


MY ATTEMPT:
------------
I was thinking of creating a rectangle the size of the mapper window
into an object variable, and then running a query to see if my table
intersects the object variable - but it don't work - I don't even get
an error message!  Reason for using an object variable was to optimise
speed - I'm gona be evaluating a lot of workspaces with a lot layers.


Here's the failed attempt code:
--------------------------------
Declare Sub Main
Declare Function LayerIsVisible
(
ByVal WinID as integer,
ByVal s_Layer as string
)
as logical
--------------------------------
Sub Main

Dim
i, WinID as integer,
s_Layer as string

Print chr$(12)
WinID = FrontWindow()

for i = 1 to MapperInfo(WinID, MAPPER_INFO_LAYERS)
s_Layer = LayerInfo(WinID, i, LAYER_INFO_NAME)
If LayerIsVisible(WinID, s_Layer) then
           Print s_Layer
           End if
next

End Sub

--------------------------------
Function LayerIsVisible(
ByVal WinID as integer,
ByVal s_Layer as string
)
as logical

Dim
Mx1, Mx2, My1, My2 as float,
o_Rectangle as object

LayerIsVisible = FALSE
Mx1 = MapperInfo(WinID, MAPPER_INFO_MINX)
My1 = MapperInfo(WinID, MAPPER_INFO_MINY)
Mx2 = MapperInfo(WinID, MAPPER_INFO_MAXX)
My2 = MapperInfo(WinID, MAPPER_INFO_MAXY)

Create Rect Into Variable o_Rectangle
           (Mx1, My1) (Mx2, My2)

'*** The following bit must be wrong because
'*** it never evaluates to true.

If s_Layer intersects o_Rectangle then
LayerIsVisible = TRUE
end if

End Function
--------------------------------


Peter Zyczynski
Analyst Programmer
Insight GIS
Australia
Ph:  (03) 6244-7344
Fax: (03) 6244-7028
[EMAIL PROTECTED]
www.insightgis.com.au



---------------------------------------------------------------------
List hosting provided by Directions Magazine | www.directionsmag.com |
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Message number: 2331





---------------------------------------------------------------------
List hosting provided by Directions Magazine | www.directionsmag.com |
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Message number: 2336
Note:
This message is for the named person's use only.  It may contain
confidential, proprietary or legally privileged information.  No
confidentiality or privilege is waived or lost by any mistransmission.  If
you receive this message in error, please immediately delete it and all
copies of it from your system, destroy any
hard copies of it and notify the sender.  You must not, directly or
indirectly, use, disclose, distribute, print, or copy any part of this
message if you are not the intended recipient. Any views expressed in this
message are those of the individual sender, except where the message states
otherwise and the sender is authorised to state them to be the views of any
such entity.

Thank You.

http://www.waitakere.govt.nz





---------------------------------------------------------------------
List hosting provided by Directions Magazine | www.directionsmag.com |
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Message number: 2345

Reply via email to