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

📄 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;
         FoundFeature.
         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 + -