⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 layermanage.~pas

📁 校园GIS系统——介绍校园个部门
💻 ~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 + -