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

📄 lyrcntrl.pas

📁 mapx+delphi 实例 mapx5.0 EXAMPLE
💻 PAS
字号:
// This sample application and corresponding sample code is provided
// for example purposes only.  It has not undergone rigorous testing
// and as such should not be shipped as part of a final application
// without extensive testing on the part of the organization releasing
// the end-user product.

unit LyrCntrl;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, MapXLib_TLB;

type
  TForm1 = class(TForm)
    Command1: TButton;
    ListBox1: TListBox;
    GroupBox1: TGroupBox;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    GroupBox2: TGroupBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    Button1: TButton;
    Button2: TButton;
    OpenDialog1: TOpenDialog;
    CheckBox6: TCheckBox;
    Label1: TLabel;
    Label2: TLabel;
    procedure FormActivate(Sender: TObject);
    procedure Command1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
    procedure CheckBox3Click(Sender: TObject);
    procedure CheckBox4Click(Sender: TObject);
    procedure CheckBox5Click(Sender: TObject);
    procedure CheckBox6Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  private
    { Private declarations }

    lyr: Layer;    {Global variable to keep track of selected layer
                         in listbox}
    procedure UpdateControls(layerIsSelected: Boolean; lyt: Layer);

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses
    MainUnit;

{$R *.DFM}

procedure TForm1.FormActivate(Sender: TObject);
var
   i, lyrCount: integer;
begin
     listbox1.clear;
     {Get count of number of layers in map}
     lyrCount := mainunit.mapform.map1.layers.count;
     {if at least 1 layer, then add layers to listbox}
     if lyrCount > 0 then
       Begin
            for i := 1 to lyrCount do
                listbox1.items.add(mainunit.mapform.map1.layers.item[i].name);
            listbox1.itemindex := 0;   {set itemindex to first layer}
            {set lyr to layer 1}
            lyr := mainunit.mapform.map1.layers.item[1];
            {Set checkboxes for first layer}
            UpdateControls(true, lyr);
       end
     else
         UpdateControls(false, lyr);
end;

procedure TForm1.Command1Click(Sender: TObject);
begin
     close;   {exit layer control}
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
     if mainunit.mapform.map1.layers.count > 0 then
        lyr.autolabel := checkbox1.checked
end;

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
     if mainunit.mapform.map1.layers.count > 0 then
        lyr.labelproperties.overlap := checkbox2.checked
end;

procedure TForm1.CheckBox3Click(Sender: TObject);
begin
     if mainunit.mapform.map1.layers.count > 0 then
          lyr.labelproperties.duplicate := checkbox3.checked
end;

procedure TForm1.CheckBox4Click(Sender: TObject);
begin
     if mainunit.mapform.map1.layers.count > 0 then
          lyr.visible := checkbox4.checked
end;

procedure TForm1.CheckBox5Click(Sender: TObject);
begin
     if mainunit.mapform.map1.layers.count > 0 then
          lyr.selectable := checkbox5.checked
end;

procedure TForm1.CheckBox6Click(Sender: TObject);
begin
     if mainunit.mapform.map1.layers.count > 0 then
          lyr.zoomlayer := checkbox6.checked;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
   i: integer;
begin
     i:=0;
     {loop through to get selected layer from listbox}
     while not listbox1.selected[i] do i:=i+1;
     {set layer to selected layer}
     lyr := mainunit.mapform.map1.layers.item[i+1];
     {set checkboxes for selected layer}
     UpdateControls(true, lyr);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   i, lyrCount: integer;
begin
     lyrCount := mainunit.mapform.map1.layers.count;
     if lyrCount > 0 then
       Begin
         i:=0;
         while not listbox1.selected[i] do i:=i+1;
         listbox1.clear;
         mainunit.mapform.map1.layers.remove(i+1);
         lyrCount := lyrCount - 1;
         mainunit.mapform.map1.refresh;
         if lyrCount = 0 then {reset Checkboxes}
           UpdateControls(false, lyr)
         else    {Add remaining layers to listbox}
           Begin
             for i := 1 to lyrCount do
               listbox1.items.add(mainunit.mapform.map1.layers.item[i].name);
             listbox1.itemindex := 0;
             lyr := mainunit.mapform.map1.layers.item[1];
             UpdateControls(true, lyr);
           end;
       End
     Else
       ShowMessage('There are no more layers to remove');

end;

procedure TForm1.Button2Click(Sender: TObject);
var
   i: integer;
begin
     OpenDialog1.Filter := 'MapInfo Tables(*.TAB)|*.TAB';
     OpenDialog1.Title := 'Choose Layer to Open';
     OpenDialog1.FileName := '*.TAB';
     OpenDialog1.Execute;
     If openDialog1.FileName <> '*.TAB' Then
        mainunit.mapform.map1.OleObject.layers.add(openDialog1.FileName);

     {update ListBox}
     listbox1.clear;
     for i := 1 to mainunit.mapform.map1.layers.count do
         listbox1.items.add(mainunit.mapform.map1.layers.item[i].name);
     listbox1.itemindex := 0;
     lyr := mainunit.mapform.map1.layers.item[1];
     UpdateControls(true, lyr);
end;

procedure TForm1.UpdateControls(layerIsSelected: Boolean; lyt: Layer);
begin
     {reset Checkboxes}
     if layerIsSelected and (lyr.type_ = miLayerTypeNormal) then
     begin
          checkbox1.Enabled := true;
          checkbox2.Enabled := true;
          checkbox3.Enabled := true;
          checkbox4.Enabled := true;
          checkbox5.Enabled := true;
          checkbox6.enabled := true;
          label1.enabled := true;
          label2.enabled := true;
          checkbox1.checked := lyr.autolabel;
          checkbox2.checked := lyr.labelproperties.overlap;
          checkbox3.checked := lyr.labelproperties.duplicate;
          checkbox4.checked := lyr.visible;
          checkbox5.checked := lyr.selectable;
          checkbox6.checked := lyr.zoomlayer;
          label1.caption    := 'Min  ' + FloatToStrF(lyr.zoommin, ffFixed, 6, 0);
          label2.caption    := 'Max  ' + FloatToStrF(lyr.zoommin, ffFixed, 6, 0);
     end
     else
     begin
         checkbox1.Enabled := false;
         checkbox2.Enabled := false;
         checkbox3.Enabled := false;
         checkbox4.Enabled := false;
         checkbox5.Enabled := false;
         checkbox6.Enabled := false;
         label1.Enabled := false;
         label2.Enabled := false;
         label1.Caption := 'Min';
         label2.Caption := 'Max';
     end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -