User Tools

Site Tools


api:dk11:delphi:gislayervector.tgis_layervector.findnext_void

Table of Contents



TGIS_LayerVector.FindNext method

DK for Delphi | GisLayerVector.TGIS_LayerVector.FindNext | Constructors | Fields | Methods | Properties | Events

Retrieves the next shape from the active FindFirst query cursor and continues iteration over shapes matching the original criteria.

Available also on: .NET | Java | ActiveX | Python.

Syntax

// Delphi
public
  function FindNext : TGIS_Shape; virtual;
// C++ Builder
public:
  virtual TGIS_Shape* FindNext(void);

Result

Type Description
TGIS_Shape Next matching shape, or nil when the iterator is exhausted.

Remarks

PURPOSE: Continue sequential retrieval of shapes started by any FindFirst overload without materializing the full result set.

BEHAVIOR: Uses the internal cursor state created by the preceding FindFirst call and returns the next shape that satisfies the same filters. Returns nil after the last match.

USAGE:

shape = layer.FindFirst(extent)
while shape != nil
  ProcessShape(shape)
  shape = layer.FindNext()

CONSTRAINTS: Requires a prior FindFirst call on the same layer. Cursor state is not reentrant, not thread-safe, and can be invalidated by layer modifications.

See: FindFirst

Use this method to find the next shape in the layer matching given criteria. We can move between shapes by doing custom operations on them.

Example

Delphi

procedure MyClass.FindNextShape();
var
   ll   : TGIS_LayerVector ;
   ex   : TGIS_Extent ;
   shp  : TGIS_Shape;
   i : Integer;
   criteria : String;
begin
   // set a visible extent to full 
   GIS.FullExtent;
   ex := GIS.VisibleExtent;
 
   // locate shapes matching given criteria on all layers
   for i:=0 to GIS.Items.Count-1 do begin
       ll :=  GIS.Items[i];
 
       // our criteria
       criteria:='POPULATION>100000 AND AREA>50333';
 
       // find a first shape in given extent
       shp:=ll.FindFirst (ex,criteria);
 
       // using FindNext method we can locate other shapes
       // any found shape will have its area color changed
       while assigned( shp ) do begin
         shp := shp.MakeEditable;
         shp.Params.Area.Color:=clBlue;
         shp := ll.FindNext ;
       end;
   end;
end;

References

2026/09/20 23:48

Page Tools