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

📄 usaodbc.pas

📁 mapx_and_ODBC
💻 PAS
字号:
unit usaodbc;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, MapXLib_TLB,comobj;

type
  TForm1 = class(TForm)
    Map1: TMap;
    odbc: TButton;
    infomation: TButton;
    theme: TButton;
    zoomin: TButton;
    zoomout: TButton;
    exit: TButton;
    procedure odbcClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure infomationClick(Sender: TObject);
    procedure Map1ToolUsed(Sender: TObject; ToolNum: Smallint; X1, Y1, X2,
      Y2, Distance: Double; Shift, Ctrl: WordBool;
      var EnableDefault: WordBool);
    procedure zoominClick(Sender: TObject);
    procedure zoomoutClick(Sender: TObject);
    procedure exitClick(Sender: TObject);
    procedure themeClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    dst : cmapxdataset;
  end;

const
  MAP_TOOL_INFO = 501;

var
  Form1: TForm1;
  //dst : cmapxdataset;

implementation

uses information, themeedit;

{$R *.dfm}

procedure TForm1.odbcClick(Sender: TObject);
var
  flds : cmapxfields;
  parm : variant;
begin
  parm := createoleobject('mapx.odbcqueryinfo.5');
  parm.sqlquery := 'select * from usa';
  parm.ConnectString := 'ODBC;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\Program Files\MapInfo\MapX 5.0\Data\MapStats.mdb;';

  parm.datasource :='';
  flds := cofields.Create;
  flds.Add('GEONAME','GEONAME',miaggregationauto,mitypestring);
  flds.Add('GEOABBR','GEOABBR',miaggregationauto,mitypestring);
  flds.Add('TOTPOP','TOTPOP',miaggregationauto,mitypenumeric);
  flds.Add('FEMPOP','FEMPOP',miaggregationauto,mitypenumeric);
  flds.Add('MALEPOP','MALEPOP',miaggregationauto,mitypenumeric);
  flds.Add('POP14','POP14',miaggregationauto,mitypenumeric);
  flds.Add('POP15_64','POP15_64',miaggregationauto,mitypenumeric);
  flds.Add('POP65','POP65',miaggregationauto,mitypenumeric);
  flds.Add('CAUC','CAUC',miaggregationauto,mitypenumeric);
  flds.Add('BLACK','BLACK',miaggregationauto,mitypenumeric);
  flds.Add('AM_INDIAN','AM_INDIAN',miaggregationauto,mitypenumeric);
  flds.Add('ASIAN','ASIAN',miaggregationauto,mitypenumeric);
  flds.Add('HISP','HISP',miaggregationauto,mitypenumeric);
  flds.Add('OTHERETH','OTHERETH',miaggregationauto,mitypenumeric);
  flds.Add('TOTHOUS','TOTHOUS',miaggregationauto,mitypenumeric);
  flds.Add('AVEHOUS','AVEHOUS',miaggregationauto,mitypenumeric);

  dst := map1.DataSets.Add(miDataSetODBC, parm, 'ODBC Dataset',EmptyParam, EmptyParam, 'USA', flds, EmptyParam);


end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  MAP1.CreateCustomTool(MAP_TOOL_INFO,mitooltypepoint,miarrowcursor);
end;

procedure TForm1.infomationClick(Sender: TObject);
begin
  map1.CurrentTool := MAP_TOOL_INFO;
end;

procedure TForm1.Map1ToolUsed(Sender: TObject; ToolNum: Smallint; X1, Y1,
  X2, Y2, Distance: Double; Shift, Ctrl: WordBool;
  var EnableDefault: WordBool);
var
  pnt : cmapxpoint;
  flds1,flds2 : cmapxfields;
  features : cmapxfeatures;
  feature : cmapxfeature;
  lyr : cmapxlayer;
  i,j : integer;
  rvs : cmapxrowvalues;
  rv : cmapxrowvalue;
  str : string;
begin
  case toolnum of
  MAP_TOOL_INFO:
  begin
  lyr := map1.Layers.Item['usa'];
  //dst := map1.DataSets.Add(miDataSetLayer,lyr,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam);
  flds1 := dst.Fields;
  //dst := map1.DataSets.Add(miDataSetLayer,lyr,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam);
  //flds2 :=dst.Fields;

  {for i :=1 to flds.Count do
  begin
    showmessage(flds.Item[i].Name);
    showmessage(lyr.KeyField);
  end;
  }
  pnt := copoint.Create;
  pnt.Set_(x1,y1);
  features := lyr.SearchAtPoint(pnt,miSearchResultRegion);
  for I := 1 to features.Count do
  begin
    feature := features.Item[i];
    infor.fieldslist.clear;
    infor.valueslist.clear;
    rvs := map1.DataSets.Item[i].RowValues[feature];
    for j := 1 to flds1.Count do
    begin
      str := flds1.Item[j].Name;
      rv := rvs.Item[j];
      //lyr.KeyField := str;
      infor.fieldslist.items.add(flds1.Item[j].Name);
      infor.valueslist.items.add(rv.Value);
    end;
  end;
  infor.Show;
  end;
  end;

end;

procedure TForm1.zoominClick(Sender: TObject);
begin
  map1.CurrentTool := miZoomInTool;
end;

procedure TForm1.zoomoutClick(Sender: TObject);
begin
  map1.CurrentTool := miZoomOutTool;
end;

procedure TForm1.exitClick(Sender: TObject);
begin
  close;
end;

procedure TForm1.themeClick(Sender: TObject);
begin
  themeinfo.Show;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -