Тема: БД и ГИС
Показать сообщение отдельно
  #3  
Старый 17.04.2014, 04:18
Demlan Demlan вне форума
Прохожий
 
Регистрация: 09.09.2011
Сообщения: 27
Репутация: 10
По умолчанию

Может и правильней, только вот результат все равно нулевой. Проблема в цикле по ходу. Не могу ее решить..

С этим
Код:
if (X > Xmin) and (X < Xmax) and (Y > Ymin) and (Y < Ymax)
хотя бы одно на одно здание реагировало.
А с этим
Код:
if (X in [Xmin..Xmax]) and (Y in [Ymin..Ymax]) then
перестало реагировать...

Изменил код функции на
Код:
function TForm1.GetImageName(const X, Xmin, Xmax, Y, Ymin, Ymax: Integer): string;
begin

if Result = '' then
if (X > Xmin) and (X < Xmax) and (Y > Ymin) and (Y < Ymax)
  then  begin
    Result:= ADOTable1Foto.AsString;
  end
  else
    Result:= '';
end;
стало все норм. Однако идет мерцание картинки при перемещении мышки по зданию. Посоветуйте, как убрать этот неприятный эффект?

Все заработало как надо. Если кому пригодится, то вот:
Код:
function TForm1.GetImageName(const X, Xmin, Xmax, Y, Ymin, Ymax: Integer): string;
begin
if Result = '' then
if (X > Xmin) and (X < Xmax) and (Y > Ymin) and (Y < Ymax)
  then  begin
    Result:= ADOTable1Foto.AsString;
  end
  else
    Result:= '';
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
NewImageName: string;
begin
if ssleft in shift then // если нажата левая кнопка мыши, то...
  begin
   x1:=x; //запоминаем конечные координаты
   y1:=y; //запоминаем конечные координаты
   Scrollbox1.VertScrollBar.Position := Scrollbox1.VertScrollBar.Position + y0-y1;
   Scrollbox1.HorzScrollBar.Position := Scrollbox1.HorzScrollBar.Position +x0-x1;
  end;
Label1.Caption := IntToStr(x);
Label2.Caption := IntToStr(y);
//ПЕРЕБОРКА СТРОК ТАБЛИЦЫ
with ADOTable1 do
begin First;
while not EOF do begin
NewImageName:= GetImageName(X,StrToInt(ADOTable1Xmin.Text),StrToInt(ADOTable1Xmax.Text),
  Y,StrToInt(ADOTable1Ymin.Text),StrToInt(ADOTable1Ymax.Text));
  if Label3.Caption=NewImageName then
  begin
   if NewImageName = '' then
     begin
      Image5.Visible:= False;
      LoadImage:='';
     end
   else
     if NewImageName <> LoadImage then
       begin
         Image5.Visible:= True;
         Image5.Picture.LoadFromFile(NewImageName);
         LoadImage:= NewImageName;
       end;
     end;
next;
end;
end;
Label3.Caption := NewImageName;
end;
Отдельное спасибо Alegun.
Дорогу осилит идущий. Пойду дальше... Всем удачи.
Ответить с цитированием