📄 ufind.~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 + -