  | 
				www.integro.ru ЦСИ ИНТЕГРО   
				 | 
			 
		 
		 
	
		| Предыдущая тема :: Следующая тема   | 
	 
	
	
		| Автор | 
		Сообщение | 
	 
	
		Наталья Колонтай
 
  
  Зарегистрирован: 01.11.2005 Сообщения: 22 Откуда: Москва
  | 
		
			
				 Добавлено: Пн 19 Мар 2007 13:24    Заголовок сообщения: QueryBySurfacePos в Delphi | 
				     | 
			 
			
				
  | 
			 
			
				Для выбора объектов использую примерно следующий код:
 
var MapObjectsQuery:IIngeoMapObjectsQuery;
 
    aLayerIDs: string;
 
    aSurface: IIngeoPaintSurface;
 
begin
 
   aSurface:=FInGeoApp.MainWindow.MapWindow.Surface;
 
   aLayerIDs:=RLPointLayerID;
 
   MapObjectsQuery:=FInGeoApp.ActiveDb.MapObjects.QueryBySurfacePos(aLayerIDs,aSurface,X,Y);
 
При передаче ID одного слоя в переменной типа string все нормально срабатывает.
 
Как в Delphi  передать функции QueryBySurfacePos одновременно целый список слоев? | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		RuslanG
 
  
  Зарегистрирован: 10.07.2005 Сообщения: 171 Откуда: ИНТЕГРО
  | 
		
			
				 Добавлено: Пн 19 Мар 2007 15:06    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				aLayerIDs - список идентификаторов слоев, в которых следует производить поиск. Данный параметр может содержать строку или массив строк. Ниже приведен пример реализации: 	  | Код: | 	 		  function TMainForm.GetDevXY(aSurface: IIngeoPaintSurface): TPoint;
 
begin
 
   aSurface.PointWorldToDevice(-3549, -8927, Result.X, Result.Y);
 
end;
 
procedure TMainForm.TestButtonClick(Sender: TObject);
 
var
 
   aSurface: IIngeoPaintSurface;
 
   aMapObjects: IIngeoMapObjects;
 
   aLayersIDs: OleVariant;
 
   aMapObjectsQuery: IIngeoMapObjectsQuery;
 
   aDevXY: TPoint;
 
   aMapObject: IIngeoMapObject;
 
begin
 
   aSurface := FIngeo.MainWindow.MapWindow.Surface;
 
   aMapObjects := FIngeo.ActiveDb.MapObjects;
 
   aLayersIDs := VarArrayOf(['00010000042B', '006500001E92']);
 
   aDevXY := GetDevXY(aSurface);
 
   aMapObjectsQuery := aMapObjects.QueryBySurfacePos(aLayersIDs, aSurface, aDevXY.X, aDevXY.Y);
 
   while not aMapObjectsQuery.EOF do begin
 
      aMapObject := aMapObjects.GetObject(aMapObjectsQuery.ObjectID);
 
      // Ваши действия
 
      ShowMessage(aMapObject.ID);
 
      aMapObjectsQuery.MoveNext;
 
   end;
 
   aMapObjects.UpdateChanges;
 
end; | 	 
  _________________ С уважением, Руслан Гадеев
 
Видео уроки ИнГео
 
Документация ИнГео
 
Обновления ИнГео
 
Интегропедия | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять приложения в этом форуме Вы можете скачивать файлы в этом форуме
  | 
   
 
		 |