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

📄 udatasets.pas

📁 用DELPHI 和MAPX的基础练习.是学习的好资料
💻 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 + -