Помогите разобраться, пытаюсь изменить цвет объекта карты (страна) по соответствию значение в БД - значение семантики. Объекты не окрашиваются.
implementation
{$R *.dfm}
const
sColor = '101серый,201белый,301красный,401оранжевый,501желтый,601зеленый,701голубой,801синий,901фиолетовый';
procedure TForm1.BitBtn3Click(Sender: TObject);
var fObj : HObj;
R : string;
p : integer;
p1:string;
begin
ADOTable1.First;
while ADOTable1.Eof<>true do
begin
if
ADOTable1priznak_tul.Value=true then
begin
p1:='синий';
p:=Pos(p1,sColor);
end
else
p1:='оранжевый';
p:=Pos(p1,sColor);
begin
R:=Copy(sColor, p-3,3);
fObj:=mapCreateSiteObject(MV.MapHandle,MV.MapHandle,KM_IDFLOAT2,0);
mapSeekSiteObject(MV.MapHandle,MV.MapHandle,fObj, ADOTable1number.value);
for p:=1 to mapSemanticAmount(fObj) do
if mapSemanticCode(fObj,p)=565 then
begin
mapSetSemanticValue(fObj, p, @R[1], LenGth®);
break;
end;
mapCommitObject(fObj);
mapFreeObject(fObj);
end;
MV.Repaint;
ADOTable1.Next;
end;
end;
implementation
{$R *.dfm}
const
sColor = '101серый,201белый,301красный,401оранжевый,501желтый,601зеленый,701голубой,801синий,901фиолетовый';
procedure TForm1.BitBtn3Click(Sender: TObject);
var fObj : HObj;
R : string;
p : integer;
p1:string;
begin
ADOTable1.First;
while ADOTable1.Eof<>true do
begin
if
ADOTable1priznak_tul.Value=true then
begin
p1:='синий';
p:=Pos(p1,sColor);
end
else
p1:='оранжевый';
p:=Pos(p1,sColor);
begin
R:=Copy(sColor, p-3,3);
fObj:=mapCreateSiteObject(MV.MapHandle,MV.MapHandle,KM_IDFLOAT2,0);
mapSeekSiteObject(MV.MapHandle,MV.MapHandle,fObj, ADOTable1number.value);
for p:=1 to mapSemanticAmount(fObj) do
if mapSemanticCode(fObj,p)=565 then
begin
mapSetSemanticValue(fObj, p, @R[1], LenGth®);
break;
end;
mapCommitObject(fObj);
mapFreeObject(fObj);
end;
MV.Repaint;
ADOTable1.Next;
end;
end;
Изменено: - 21.10.2025 10:48:27