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

📄 ufind.~pas

📁 用DELPHI 和MAPX的基础练习.是学习的好资料
💻 ~PAS
字号:
unit UFind;

interface

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

type
  TFFind = class(TForm)
    Label1: TLabel;
    ComboBox1: TComboBox;
    Label2: TLabel;
    ComboBox2: TComboBox;
    Label3: TLabel;
    Edit1: TEdit;
    GroupBox1: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    Label4: TLabel;
    ComboBox3: TComboBox;
    Label5: TLabel;
    ComboBox4: TComboBox;
    Label6: TLabel;
    Edit2: TEdit;
    CheckBox1: TCheckBox;
    Edit3: TEdit;
    Label7: TLabel;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FFind: TFFind;

implementation

uses UMap;

{$R *.dfm}

procedure TFFind.Button2Click(Sender: TObject);
begin
close;
end;

procedure TFFind.Button1Click(Sender: TObject);
var
FindObj : MapXLib_TLB.Find;
FoundFeature: FindFeature;
nothing: variant;
begin
if  (ComBoBox1.ItemIndex=-1) or  ( ComBoBox2.ItemIndex=-1)  then
    begin
      exit;
    end;
FindObj := Fmap.Map1.Layers[ComBoBox1.Text].Find;
FindObj.FindDataset := FMap.Map1.DataSets[ComBoBox1.Text+'DataSet'];
FindObj.FindField   := FMap.Map1.DataSets[ComBoBox1.Text+'DataSet'].Fields[ComBoBox2.Text];

if (ComBoBox3.ItemIndex=-1) and  ( ComBoBox4.ItemIndex=-1) and (ComBoBox3.Text='(None)') and (ComBoBox3.Text='(None)') then
    begin
      FindObj.RefineLayer  := Fmap.Map1.Layers[ComBoBox3.Text];
      FindObj.RefineDataset:= FMap.Map1.DataSets[ComBoBox1.Text+'DataSet'];
      FindObj.FindField    := FMap.Map1.DataSets[ComBoBox1.Text+'DataSet'].Fields[ComBoBox2.Text];
      FoundFeature:=FindObj.Search(Edit1.Text,Edit2.Text);
    end
else
   begin
     FindObj.RefineLayer  := VarAsType(nothing, varDispatch);
     FindObj.RefineDataset:= VarAsType(nothing, varDispatch);
     FindObj.RefineField  := VarAsType(nothing, varDispatch);
     FoundFeature:=FindObj.Search(Edit1.Text,EmptyParam);
   end;

if ((FoundFeature.FindRC mod 10) = 1 ) or ((FoundFeature.FindRC mod 10) = 2 ) then
   begin
     Fmap.Map1.AutoRedraw:=false;
     Fmap.Map1.CenterX:=FoundFeature.CenterX;
     Fmap.Map1.CenterY:=FoundFeature.CenterY;
     If CheckBox1.Checked then
     try
       Fmap.Map1.Zoom:=StrToFloat(Edit3.Text);
       close;
     except
       MessageDlg('请输入合法的数字!',mtConfirmation,[mbOK],0);
     end
    else
      close;
   end
else
  begin
  MessageDlg('没有发现要查找的Feature  '+inttostr(FoundFeature.FindRC),mtConfirmation,[mbOK],0 );
  end;
end;

procedure TFFind.FormShow(Sender: TObject);
Var
i:integer;
begin
ComBoBox3.Items.Add('(None)');
for i:=1 to  FMap.Map1.Layers.Count do
    begin
    ComBoBox1.Items.Add(Fmap.Map1.Layers.Item[i].Name);
    end;

for i:=2 to  FMap.Map1.Layers.Count do
    begin
    ComBoBox3.Items.Add(Fmap.Map1.Layers.Item[i].Name);
    end;
Fmap.Map1.DataSets.RemoveAll;
for i:=1 to  FMap.Map1.Layers.Count do
    begin
      Fmap.Map1.DataSets.Add(miDataSetLayer,Fmap.Map1.Layers[i],Fmap.Map1.Layers[i].Name+'DataSet',EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
    end;
ComBoBox1.ItemIndex:=0;
ComBoBox3.ItemIndex:=0;
ComBoBox4.ItemIndex:=0;
ComboBox1Change(self);
ComboBox3Change(self);
CheckBox1Click(self);
end;

procedure TFFind.ComboBox1Change(Sender: TObject);
var
i:integer;
begin
  ComboBox2.Clear;
  ComboBox3.Clear;

  for i:=1 to Fmap.Map1.DataSets[ComBoBox1.Text+'DataSet'].Fields.Count do
      begin
        ComBoBox2.Items.Add(Fmap.Map1.DataSets[ComBoBox1.Text+'DataSet'].Fields[i].Name);
      end;
  ComBoBox3.Items.Add('(None)');
  for i:=1 to FMap.Map1.Layers.Count do
      begin
        if  FMap.Map1.Layers[i].Name <> ComBoBox1.Text  then
        ComBoBox3.Items.Add(Fmap.Map1.Layers.Item[i].Name);
      end;
  ComBoBox2.ItemIndex:=0;
  ComBoBox3.ItemIndex:=0;
end;

procedure TFFind.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked = false then
   begin
     edit3.Enabled:=False;
     edit3.Color:=clMenu;
   end
else
   begin
     edit3.Enabled:=true;
     edit3.Color:=clWhite;
   end;
end;

procedure TFFind.ComboBox3Change(Sender: TObject);
var
i:integer;
begin
  ComboBox4.Clear;
  ComboBox4.Items.Add('(None)');
  if ComBoBox3.text<>'(None)' then
  begin
  for i:=1 to Fmap.Map1.DataSets[ComBoBox3.Text+'DataSet'].Fields.Count do
      begin
        ComBoBox4.Items.Add(Fmap.Map1.DataSets[ComBoBox3.Text+'DataSet'].Fields[i].Name);
      end;
  ComboBox4.ItemIndex:=0;
  end;
end;
end.

⌨️ 快捷键说明

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