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