📄 udatasets.pas
字号:
unit UDatasets;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,IniFiles, DB, ADODB,MapXLib_TLB;
type
TFDataSets = class(TForm)
ListBox1: TListBox;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label2: TLabel;
ComboBox1: TComboBox;
ADOConnection1: TADOConnection;
OpenDialog1: TOpenDialog;
ADOTable1: TADOTable;
Button4: TButton;
Button5: TButton;
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
// MapDataOpen: boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
FDataSets: TFDataSets;
implementation
uses UMap;
{$R *.dfm}
procedure OpenMapData() ;
begin
end;
procedure TFDataSets.Button3Click(Sender: TObject);
begin
if Button3.Caption= '高级...' then
begin
FDataSets.Height:= 298;
Button3.Caption := '简单...';
end
else if Button3.Caption = '简单...' then
begin
FDataSets.Height:= 220;
Button3.Caption := '高级...';
end;
end;
procedure TFDataSets.FormCreate(Sender: TObject);
Var
IniFile:TIniFile;
Dir:String;
MapDataOpen:boolean;
begin
FDataSets.Height:= 220;
Button3.Caption:='高级...';
IniFile:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'zl.ini');
MapDataOpen:=Inifile.ReadBool('MapData','MapDataOpen',false);
if MapDataOpen=true then
begin
Dir:=Inifile.ReadString('MapData','Dir','error');
ADOConnection1.Connected:=false;
try
ADOConnection1.Provider:='Microsoft.Jet.OLEDB.4.0;Password="";Data Source='+Dir+';Persist Security Info=True';
ADOConnection1.GetTableNames(listbox1.items, False);
Button1.Enabled:=false;
except
exit;
end;
end;
end;
procedure TFDataSets.Button2Click(Sender: TObject);
begin
close;
end;
procedure TFDataSets.Button1Click(Sender: TObject);
var
IniFile:TIniFile;
Dir:String;
MapDataOpen:Boolean;
i,j: integer;
List:TStrings;
begin
IniFile:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'zl.ini');
MapDataOpen :=Inifile.ReadBool('MapData','MapDataOpen',false);
if (MapDataOpen = false) then
begin
Dir:=Inifile.ReadString('MapData','Dir','error');
if Dir<> '' then
begin
ADOConnection1.Connected:=false;
ADOConnection1.Provider:='Microsoft.Jet.OLEDB.4.0;Password="";Data Source='+Dir+';Persist Security Info=True';
try
List.Create;
ADOConnection1.Connected:=true;
case ComboBox1.ItemIndex of
0: ADOConnection1.GetTableNames(listbox1.items, False);
// 1:
// 2:
end;
MapDataOpen := True;
Inifile.WriteBool('MapData','MapDataOpen',MapDataOpen);
except
showmessage('连接数据库出错');
MessageDlg('请您在''''MapX''''目录的子目录''''Data''''下寻找''''Mapstats.mdb''''数据库文件',mtInformation,[MbOK],0);
opendialog1.Title:='打开数据库';
if opendialog1.Execute then
begin
Dir:= opendialog1.FileName;
Inifile.WriteString('MapData','dir',Dir);
end;
end;
end
else
begin
MessageDlg('请您在''''MapX''''目录的子目录''''Data''''下寻找''''Mapstats.mdb''''数据库文件',mtInformation,[MbOK],0);
opendialog1.Title:='打开数据库';
if opendialog1.Execute then
begin
Dir:= opendialog1.FileName;
Inifile.WriteString('MapData','dir',Dir);
end;
ADOConnection1.Provider:='Microsoft.Jet.OLEDB.4.0;Password="";Data Source='+Dir+';Persist Security Info=True';
try
ADOConnection1.Connected:=true;
case ComboBox1.ItemIndex of
0: ADOConnection1.GetTableNames(listbox1.items, False);
1: begin
for i:=0 to ADOConnection1.DataSetCount-1 do
begin
for j:=0 to ADOConnection1.DataSets[i].FieldCount-1 do
begin
showmessage(ADOConnection1.DataSets[i].Fields[j].DisplayName);
end;
end;
end;
2: begin
end;
end;
MapDataOpen := True;
Inifile.WriteBool('MapData','MapDataOpen',MapDataOpen);
except
showmessage('连接数据库出错');
end;
end;
end
else
begin
ADOTable1.Connection:=ADOConnection1;
// ADOTable1.TableName:=ListBox1.Items[ListBox1.ItemIndex];
// ADOTable1.Open;
case Combobox1.ItemIndex of
0: begin
end;
end;
end;
end;
procedure TFDataSets.ComboBox1Change(Sender: TObject);
Var
list :TstringList;
List1 :TStringlist;
i :integer;
j :integer;
HasX :Boolean;
HasY :Boolean;
begin
List:= TStringlist.Create;
List1:=TStringlist.Create;
HasX:=False;
HasY:=False;
Case ComboBox1.ItemIndex of
0: ADOConnection1.GetTableNames(listbox1.items, False);
1: begin
ListBox1.Clear;
ADOConnection1.GetTableNames(List,False);
for i:=0 to List.Count-1 Do
begin
ADOConnection1.GetFieldNames(List.Strings[i],List1);
for j:=0 to List1.count-1 do
begin
if List1.Strings[j]='X' then
HasX:=true;
if List1.Strings[j]='Y' then
HasY:=true;
end;
if HasX and HasY then
ListBox1.Items.Add(List.Strings[i]);
end;
end;
2: begin
ListBox1.Clear;
ADOConnection1.GetTableNames(List,False);
for i:=0 to List.Count-1 Do
begin
ADOConnection1.GetFieldNames(List.Strings[i],List1);
for j:=0 to List1.count-1 do
begin
if List1.Strings[j]='ZIP' then
ListBox1.Items.Add(List.Strings[i]);
end;
end;
end;
end;
end;
procedure TFDataSets.FormShow(Sender: TObject);
Var
IniFile:TIniFile;
Dir:String;
MapDataOpen:boolean;
begin
FDataSets.Height:= 242;
Button3.Caption:='高级...';
IniFile:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'zl.ini');
MapDataOpen:=Inifile.ReadBool('MapData','MapDataOpen',false);
if MapDataOpen=true then
begin
Dir:=Inifile.ReadString('MapData','Dir','error');
ADOConnection1.Connected:=false;
try
ADOConnection1.Provider:='Microsoft.Jet.OLEDB.4.0;Password="";Data Source='+Dir+';Persist Security Info=True';
ADOConnection1.GetTableNames(listbox1.items, False);
Button1.Enabled:=false;
except
exit;
end;
end;
end;
procedure TFDataSets.Button4Click(Sender: TObject);
var
BindLyr:CMapXbindLayer;
rs: _Recordset;
begin
ADOTable1.close;
ADOTable1.Connection:= ADOConnection1;
Showmessage(ListBox1.Items[ListBox1.ItemIndex]);
ADOTable1.TableName := ListBox1.Items[ListBox1.ItemIndex];
ADOTable1.Active:=true;
BindLyr := CoBindLayer.Create;
Showmessage(FMap.Map1.GeoSet);
rs:= ADOTable1.Recordset;
Case ComboBox1.ItemIndex of
0: begin
BindLyr.LayerType:= 0;
if (FMap.Map1.GeoSet ='United States') and (ADOTable1.TableName='USA') then
begin
BindLyr.LayerName:='USA';
FMap.Map1.DataSets.Add(miDataSetADO,rs,ADOTable1.TableName,EmptyParam,EmptyParam,BindLyr,EmptyParam,true);
end;
end;
1: begin
BindLyr.LayerType:= miBindLayerTypeXY;
BindLyr.RefColumn1:='X';
BindLyr.RefColumn2:='Y';
FMap.Map1.DataSets.Add(miDataSetADO,rs,ADOTable1.TableName,'X','Y',BindLyr,EmptyParam,EmptyParam);
end;
2: begin
end;
end;
close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -