Здравствуйте!
В примерах ГТК есть проект mapOverlay.
Но что-то я зациклился и не могу понять, где я не правильно написал исходный код:
procedure Tform_main.BitBtn1Click(Sender: TObject);
Var
i : integer;
q : double;
begin
// Шаблон
form_main.MapFind1.Active := false;
form_main.MapFind1.FindPoint := false;
form_main.MapFind1.MapSelect.Clear;
form_main.MapFind1.MapSelect.Excode[-1,0] := false;
form_main.MapFind1.MapSelect.Excode[10000017,OL_SQUARE] := true;
form_main.MapFind1.Active := true;
form_main.MapFind1.First;
form_main.MapFind1.Center;
Temp.StyleSelect := SEL_LINE;
Temp.Style := OS_SELECT;
Temp.Center;
ShowMessage ('найден Шаблон');
// Пересекаемый объект
form_main.MapFind2.Active := false;
form_main.MapFind2.FindPoint := false;
form_main.MapFind2.MapSelect.Clear;
form_main.MapFind2.MapSelect.Excode[-1,0] := false;
form_main.MapFind2.MapSelect.Excode[10000019,OL_SQUARE] := true;
form_main.MapFind2.Active := true;
form_main.MapFind2.First;
form_main.MapFind2.Center;
objIn.StyleSelect := SEL_LINE;
objIn.Style := OS_SELECT;
objIn.Center;
ShowMessage ('найден пересекаемый объект');
ovlObj.CreateOVL(0,0.001,0, 1);
ovlObj.SetObjectCross(0, 0.001, 0, ovl_METHOD_SQUARE, ovl_ANYOBJECT);
ShowMessage ('objIn.KeyName = '+objIn.KeyName);
objOut.CreateObjectByKey(1, KM_IDDOUBLE2, objIn.KeyName);
objOut.Commit;
i := objOut.ObjHandle;
ShowMessage ('i = '+IntToStr(i)); // здесь выдает номер нормально
q := objOut.Square;
ShowMessage ('q = '+FloatToStr(q)); // Площадь равна 0
Temp.Style := OS_NORMAL;
objIn.Style := OS_NORMAL;
objOut.StyleSelect := SEL_LINE;
objOut.Style := OS_SELECT;
mvMap.Repaint;
end;
Очень похоже на то, что objOut не получил координаты, по которым он должен быть создан.
Просьба подсказать, что я не правильно делаю?
В примерах ГТК есть проект mapOverlay.
Но что-то я зациклился и не могу понять, где я не правильно написал исходный код:
procedure Tform_main.BitBtn1Click(Sender: TObject);
Var
i : integer;
q : double;
begin
// Шаблон
form_main.MapFind1.Active := false;
form_main.MapFind1.FindPoint := false;
form_main.MapFind1.MapSelect.Clear;
form_main.MapFind1.MapSelect.Excode[-1,0] := false;
form_main.MapFind1.MapSelect.Excode[10000017,OL_SQUARE] := true;
form_main.MapFind1.Active := true;
form_main.MapFind1.First;
form_main.MapFind1.Center;
Temp.StyleSelect := SEL_LINE;
Temp.Style := OS_SELECT;
Temp.Center;
ShowMessage ('найден Шаблон');
// Пересекаемый объект
form_main.MapFind2.Active := false;
form_main.MapFind2.FindPoint := false;
form_main.MapFind2.MapSelect.Clear;
form_main.MapFind2.MapSelect.Excode[-1,0] := false;
form_main.MapFind2.MapSelect.Excode[10000019,OL_SQUARE] := true;
form_main.MapFind2.Active := true;
form_main.MapFind2.First;
form_main.MapFind2.Center;
objIn.StyleSelect := SEL_LINE;
objIn.Style := OS_SELECT;
objIn.Center;
ShowMessage ('найден пересекаемый объект');
ovlObj.CreateOVL(0,0.001,0, 1);
ovlObj.SetObjectCross(0, 0.001, 0, ovl_METHOD_SQUARE, ovl_ANYOBJECT);
ShowMessage ('objIn.KeyName = '+objIn.KeyName);
objOut.CreateObjectByKey(1, KM_IDDOUBLE2, objIn.KeyName);
objOut.Commit;
i := objOut.ObjHandle;
ShowMessage ('i = '+IntToStr(i)); // здесь выдает номер нормально
q := objOut.Square;
ShowMessage ('q = '+FloatToStr(q)); // Площадь равна 0
Temp.Style := OS_NORMAL;
objIn.Style := OS_NORMAL;
objOut.StyleSelect := SEL_LINE;
objOut.Style := OS_SELECT;
mvMap.Repaint;
end;
Очень похоже на то, что objOut не получил координаты, по которым он должен быть создан.
Просьба подсказать, что я не правильно делаю?