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.
// Delphi public function FindNext : TGIS_Shape; virtual;
// C++ Builder public: virtual TGIS_Shape* FindNext(void);
| Type | Description |
|---|---|
| TGIS_Shape | Next matching shape, or nil when the iterator is exhausted. |
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.
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;