📄 layermanage.~pas
字号:
unit layermanage;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, StdCtrls, MapObjects2_TLB, CheckLst, Grids;
type
TLayerManaFrm = class(TForm)
btTop: TButton;
btUp: TButton;
btDown: TButton;
btBottom: TButton;
BbAdd: TBitBtn;
BbRemove: TBitBtn;
layernamechecklistbox: TCheckListBox;
CheckBox1: TCheckBox;
Label1: TLabel;
StringGrid1: TStringGrid;
procedure ShowDescribe(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure layernamechecklistboxClick(Sender: TObject);
procedure layernamechecklistboxClickCheck(Sender: TObject);
procedure BbAddClick(Sender: TObject);
procedure BbRemoveClick(Sender: TObject);
procedure btTopClick(Sender: TObject);
procedure btUpClick(Sender: TObject);
procedure btDownClick(Sender: TObject);
procedure btBottomClick(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
LayerManaFrm: TLayerManaFrm;
implementation
uses Main;
{$R *.DFM}
procedure TLayerManaFrm.ShowDescribe(Sender: TObject);
var
layer: ImoMapLayer;
i: integer;
begin
if CheckBox1.Checked then
begin
//LayerManaFrm.Width:=LayerManaFrm.Width+150;
Layer:=coMaplayer.Create;
Layer:=imoMaplayer(MainFrm.Mainmap.Layers.Item(layernamechecklistbox.ItemIndex));
case layer.shapeType of
moPoint:
label1.Caption:='点对象';
moLine:
label1.Caption:='线对象';
moPolygon:
label1.Caption:='多边形对象';
end;
StringGrid1.Cells[0,0] :=' 字段 ';
StringGrid1.Cells[1,0] :=' 类型 ';
StringGrid1.RowCount:=layer.Records.TableDesc.FieldCount+1;
for i:=0 to layer.Records.TableDesc.FieldCount-1 do
begin
StringGrid1.Cells[0,i+1] := layer.Records.fields.Item(layer.Records.TableDesc.FieldName[i]).Name ;
//showmessage(string(layer.Records.TableDesc.FieldType[i]));
case layer.Records.TableDesc.FieldType[i] of
moBoolean:
StringGrid1.Cells[1,i+1] :='Boolean';
moLong:
StringGrid1.Cells[1,i+1] :='Long';
moDate:
StringGrid1.Cells[1,i+1] :='Date';
moDouble:
StringGrid1.Cells[1,i+1] :='Boolean';
moString:
StringGrid1.Cells[1,i+1] :='String';
moNone:
StringGrid1.Cells[1,i+1] :='None';
moPoint:
stringGrid1.Cells[1,i+1] :='moPoint';
moLine:
stringGrid1.Cells[1,i+1] :='moLine';
mopolygon:
stringGrid1.Cells[1,i+1] :='mopolygon';
moPoints:
stringGrid1.Cells[1,i+1] :='moPoints';
end;
end;
end;
// else
// LayerManaFrm.Width:=LayerManaFrm.Width-150;
end;
procedure TLayerManaFrm.FormActivate(Sender: TObject);
var
i: integer;
currentlayer: IMoMaplayer;
begin
layernamechecklistbox.Clear;
for i := 0 to mainfrm.mainmap.Layers.Count - 1 do
begin
currentlayer := CoMapLayer.Create;
currentlayer := IMoMapLayer(mainfrm.mainmap.Layers.Item(i));
layernamechecklistbox.Items.Add(currentlayer.name);
layernamechecklistbox.Checked[i] := currentlayer.Visible;
MainFrm.StatusBar1.Panels[2].Text:='当前图层: '+IMoMapLayer(mainfrm.mainmap.Layers.Item(0)).Name;
//图层显示控制
end;
layernamechecklistbox.ItemIndex:=0;
//按钮显示控制
BbRemove.Enabled:=layernamechecklistbox.Items.Count >0;
btTop.Enabled:=layernamechecklistbox.ItemIndex>0;
btUp.Enabled:=layernamechecklistbox.ItemIndex>0;
btDown.Enabled:=layernamechecklistbox.ItemIndex<>MainFrm.MainMap.Layers.Count-1;
btBottom.Enabled:=layernamechecklistbox.ItemIndex<>MainFrm.MainMap.Layers.Count-1;
ShowDescribe(Sender);
MainFrm.tfcMaptreeview1.DrawLegend;
end;
procedure TLayerManaFrm.layernamechecklistboxClickCheck(Sender: TObject);
begin
currentlayer:= IMoMapLayer(mainfrm.mainmap.Layers.Item(layernamechecklistbox.ItemIndex));
currentlayer.Visible:=layernamechecklistbox.checked[layernamechecklistbox.ItemIndex];
MainFrm.MainMap.Refresh;
end;
procedure TLayerManaFrm.layernamechecklistboxClick(Sender: TObject);
begin
BbRemove.Enabled:=MainFrm.MainMap.Layers.Count>=0;
btTop.Enabled:=layernamechecklistbox.ItemIndex>0;
btUp.Enabled:=layernamechecklistbox.ItemIndex>0;
btDown.Enabled:=layernamechecklistbox.ItemIndex<>MainFrm.MainMap.Layers.Count-1;
btBottom.Enabled:=layernamechecklistbox.ItemIndex<>MainFrm.MainMap.Layers.Count-1;
ShowDescribe(Sender);
end;
procedure TLayerManaFrm.btTopClick(Sender: TObject);
begin
MainFrm.MainMap.Layers.MoveToTop(layernamechecklistbox.ItemIndex);
//图层上移到顶
LayerManaFrm.OnActivate(sender);
MainFrm.MainMap.Refresh;
end;
procedure TLayerManaFrm.btUpClick(Sender: TObject);
begin
MainFrm.MainMap.Layers.MoveTo(layernamechecklistbox.ItemIndex,layernamechecklistbox.ItemIndex-1);
//图层上移
LayerManaFrm.OnActivate(sender);
MainFrm.MainMap.Refresh;
end;
procedure TLayerManaFrm.btDownClick(Sender: TObject);
begin
MainFrm.MainMap.Layers.MoveTo(layernamechecklistbox.ItemIndex,layernamechecklistbox.ItemIndex+1);
//图层下移
LayerManaFrm.OnActivate(sender);
MainFrm.MainMap.Refresh;
end;
procedure TLayerManaFrm.btBottomClick(Sender: TObject);
begin
MainFrm.MainMap.Layers.MoveToBottom(layernamechecklistbox.ItemIndex);
//图层上移到底
LayerManaFrm.OnActivate(sender);
MainFrm.MainMap.Refresh;
end;
procedure TLayerManaFrm.BbRemoveClick(Sender: TObject);
begin
MainFrm.MainMap.Layers.Remove(layernamechecklistbox.ItemIndex);
//图层移出
MainFrm.LocalMap.Layers.Remove(layernamechecklistbox.ItemIndex);
MainFrm.MainMap.Refresh;
LayerManaFrm.OnActivate(sender);
end;
procedure TLayerManaFrm.BbAddClick(Sender: TObject);
begin
MainFrm.MnOpenShapeFile.Click;
LayerManaFrm.OnActivate(sender);
end;
procedure TLayerManaFrm.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked then
begin
LayerManaFrm.Width:=LayerManaFrm.Width+150;
ShowDescribe(Sender)
end
else
LayerManaFrm.Width:=LayerManaFrm.Width-150;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -