📄 umap.pas
字号:
unit UMap;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, OleCtrls, MapXLib_TLB, StdCtrls, Buttons,
ExtCtrls,comobj, DB, DBTables, Menus;
type
TFMap = class(TForm)
//Map1: TMapX;
Panel1: TPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
Button1: TButton;
BitBtn5: TBitBtn;
Table1: TTable;
Database1: TDatabase;
Button2: TButton;
Button3: TButton;
Button4: TButton;
MainMenu1: TMainMenu;
File1: TMenuItem;
OpenGeoSet1: TMenuItem;
OpenDialog1: TOpenDialog;
OpenLayer1: TMenuItem;
OpenDialog2: TOpenDialog;
N1: TMenuItem;
SaveGeoSet1: TMenuItem;
Save1: TMenuItem;
SaveDialog1: TSaveDialog;
Export1: TMenuItem;
SaveDialog2: TSaveDialog;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
StatusBar1: TStatusBar;
PrintDialog1: TPrintDialog;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
N21: TMenuItem;
N22: TMenuItem;
N23: TMenuItem;
N24: TMenuItem;
N25: TMenuItem;
N26: TMenuItem;
N27: TMenuItem;
N28: TMenuItem;
N29: TMenuItem;
N30: TMenuItem;
N31: TMenuItem;
N32: TMenuItem;
N33: TMenuItem;
N34: TMenuItem;
N35: TMenuItem;
N36: TMenuItem;
N37: TMenuItem;
N38: TMenuItem;
N39: TMenuItem;
N40: TMenuItem;
N41: TMenuItem;
N42: TMenuItem;
N43: TMenuItem;
N44: TMenuItem;
Map1: TMapX;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Map1MapViewChanged(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure OpenGeoSet1Click(Sender: TObject);
procedure OpenLayer1Click(Sender: TObject);
procedure SaveGeoSet1Click(Sender: TObject);
procedure Save1Click(Sender: TObject);
procedure Export1Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure Map1ToolUsed(Sender: TObject; ToolNum: Smallint; X1, Y1, X2,
Y2, Distance: Double; Shift, Ctrl: WordBool;
var EnableDefault: WordBool);
procedure N10Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure Map1PolyToolUsed(Sender: TObject; ToolNum: Smallint;
Flags: Integer; const Points: IDispatch; bShift, bCtrl: WordBool;
var EnableDefault: WordBool);
procedure N6Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N19Click(Sender: TObject);
procedure N22Click(Sender: TObject);
procedure N23Click(Sender: TObject);
procedure N24Click(Sender: TObject);
procedure N26Click(Sender: TObject);
procedure N27Click(Sender: TObject);
procedure N28Click(Sender: TObject);
procedure N29Click(Sender: TObject);
procedure N30Click(Sender: TObject);
procedure N32Click(Sender: TObject);
procedure N33Click(Sender: TObject);
procedure N34Click(Sender: TObject);
procedure N35Click(Sender: TObject);
procedure N36Click(Sender: TObject);
procedure N38Click(Sender: TObject);
procedure N39Click(Sender: TObject);
procedure N40Click(Sender: TObject);
procedure N41Click(Sender: TObject);
private
{ Private declarations }
public
RulerUnit :integer;
RulerUnitString :String;
ExportHeight :double;
ExportWidth :double;
ExportFormat :integer;
ExportFormatString :string;
ExportFormatExt :string;
UsePolyRuler :boolean;
UserLineRuler :boolean;
{ Public declarations }
end;
var
FMap: TFMap;
const
PolyRulerToolID = 104;
RulerToolID = 105;
implementation
uses Uoption, UDatasets, UCreateTheme, UModifyTheme, UModifyLegend, UFind,
UZoom, UViewLayer, UStyle;
{$R *.dfm}
procedure TFMap.BitBtn1Click(Sender: TObject);
begin
Map1.CurrentTool:=miZoomInTool;
end;
procedure TFMap.BitBtn2Click(Sender: TObject);
begin
MAP1.CurrentTool:=miZoomOutTool;
end;
procedure TFMap.BitBtn3Click(Sender: TObject);
begin
MAP1.CurrentTool:=miPanTool;
end;
procedure TFMap.FormCreate(Sender: TObject);
var
Features:CMapxFeatures;//地图特征集
Feature:CMapxFeature;
i,j:integer;
fields:CMapXfields;//字段集
ds:CMapXDataSet;//数据集
unusedParam: OleVariant;//未用到参数定义
Param: Variant;
pntStyle:CMapxStyle;
MyFont:TFont;
begin
Map1.CreateCustomTool(RulerToolID,miToolTypeLine, miSizeCursor, miSizeCursor, miSizeCursor, EmptyParam);
Map1.CreateCustomTool(PolyRulerToolID,miToolTypePoly, miSizeCursor, miSizeCursor, miSizeCursor, EmptyParam);
{Map1.Layers.Add('E:\test1\networkdata.TAB',2);
// Map1.GeoSet := 'C:\Documents and Settings\zhaolei\My Documents\jin.gst';
//Map1.Layers.Add('C:\Documents and Settings\zhaolei.SF\My Documents\map1\基站参数表.tab',2);
// Map1.Layers.item[1].OverrideStyle:=true;
//Map1.Layers.item[1].AutoLabel:=true;
ds := Map1.Datasets.Add(miDataSetLayer, Map1.Layers.Item[1], EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam);
pntstyle:=coStyle.create;
MyFont:=TFont.Create;
Features:= Map1.Layers[1].AllFeatures;
{ Map1.Layers.item[1].BeginAccess(miAccessReadWrite);
for i:=1 to Features.Count do
begin
myfont.Name :='MapInfo Miscellaneous';
myfont.Size:=24;
pntStyle.SymbolFontColor:= clblue;
pntStyle.SymbolFontRotation:= ds.Value[i,29];
pntStyle.SymbolCharacter:=76;
Feature.Style:=pntStyle;
Feature.Update(EmptyParam,EmptyParam);
end;
Map1.Layers.item[1].EndAccess(miAccessEnd); }
{Map1.Layers.item[1].LabelProperties.Dataset:= ds;
Map1.Layers.item[1].LabelProperties.DataField := ds.Fields.Item[29];
//Map1.Layers.item[1].LabelProperties.Position := miPositionBR;
Map1.Layers.item[1].LabelProperties.Overlap:= true;
Map1.Layers.item[1].LabelProperties.LineType:=miLineTypeArrow;
Map1.Layers.item[1].AutoLabel := True ; }
end;
procedure TFMap.BitBtn4Click(Sender: TObject);
var
param: variant;
ds: CMapXdataSet;
unusedParam: OleVariant;
fields: Variant;
thmFX: CMapXTheme;
thmJD: CMapXTheme;
pntStyle: CMapXStyle;
Features: CMapXFeatures;
Feature:CMapXFeature;
i:integer;
MyFont:TFont;
rc: RangeCategory;
iNumRanges:integer;
Features1:CMapxFeatures;//地图特征集
Feature1:CMapxFeature;
begin
map1.Layers[1].Style:=map1.DefaultStyle;
ds := Map1.Datasets.Add(miDataSetLayer, Map1.Layers.Item[1], EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam);
ds.Themes.Add(miThemeRanged, 'wd','JD',EmptyParam);
ds.Themes.Add(miThemeIndividualValue, 'fxj', 'FX',EmptyParam);
thmJD:= ds.Themes.item[1];
thmFX:= ds.Themes.item[2];
for i := 1 to thmFX.ThemeProperties.IndividualValueCategories.Count do
begin
pntStyle := thmFX.ThemeProperties.IndividualValueCategories.Item[i].Style;
pntStyle.SymbolFontRotation:= ds.Value[i,10];
thmFX.ThemeProperties.IndividualValueCategories.Item[i].Style:= pntStyle;
end;
iNumRanges:=thmJD.ThemeProperties.NumRanges;
rc:=thmJD.ThemeProperties.RangeCategories[1];
rc.Style.SymbolFontColor:=clblue;
rc:=thmJD.ThemeProperties.RangeCategories[iNumRanges];
rc.Style.SymbolFontColor:=clYellow;
{for i := 1 to thmFX.ThemeProperties.IndividualValueCategories.Count do
begin
if i=1 then
begin
iNumRanges:=thmJD.ThemeProperties.NumRanges;
pntStyle.SymbolFontColor:= clblue;
pntStyle.SymbolFontRotation:= ds.Value[i,29];
pntStyle.SymbolCharacter:=123;
rc:=thmJD.ThemeProperties.RangeCategories[1];
thmFX.ThemeProperties.IndividualValueCategories.Item[i].Style:= pntStyle;
rc.Style:=pntStyle;
end;
if (i>1) and (i<thmFX.ThemeProperties.IndividualValueCategories.count) then
begin
pntStyle.SymbolFontRotation:= ds.Value[i,10];
thmFX.ThemeProperties.IndividualValueCategories.Item[i].Style:= pntStyle;
end;
if i = thmFX.ThemeProperties.IndividualValueCategories.Count then
begin
rc:=thmJD.ThemeProperties.RangeCategories[iNumRanges];
pntStyle.SymbolFontColor:= clyellow;
pntStyle.SymbolFontRotation:= ds.Value[i,10];
thmFX.ThemeProperties.IndividualValueCategories.Item[i].Style:= pntStyle;
rc.Style:=pntStyle;
end;
end;
iNumRanges:=thmJD.ThemeProperties.NumRanges;
pntStyle.SymbolFontColor:= clblue;
rc:=thmJD.ThemeProperties.RangeCategories[1];
rc.Style:=pntStyle;
rc.Style.SymbolCharacter:=123;
rc:=thmJD.ThemeProperties.RangeCategories[iNumRanges];
pntStyle.SymbolFontColor:= clyellow;
rc.Style:=pntStyle; }
end;
procedure TFMap.Button1Click(Sender: TObject);
var
param: variant;
ds1: CMapXdataSet;
unusedParam: OleVariant;
fields: CMapXfields;
iNumRanges:integer;
rc :RangeCategory;
thmJD:CMapXTheme;
SourceData: OLEVariant;
begin
{创建 QueryInfo 对象并设置它的属性}
param := CreateOleObject('MapX.ODBCQueryInfo.5');
param.SqlQuery := 'select * from networkdata';
param.DataSource := 'db2';
param.ConnectString := 'ODBC;';
fields := CoFields.Create;
fields.Add('jd','jd', miAggregationAuto,miTypeFloat);
fields.Add('wd','wd', miAggregationAuto,miTypeFloat);
fields.Add('dhl','dhl', miAggregationAuto,miTypeFloat);
{通过QueryInfo增加数据集}
//ds := Map1.Datasets.Add(miDataSetODBC, Map1.Layers.Item[1], EmptyParam, EmptyParam, EmptyParam, EmptyParam,
// EmptyParam, EmptyParam);
ds1:= Map1.Datasets.Add(miDataSetODBC ,param, 'ODBC Dataset',EmptyParam, EmptyParam, EmptyParam, fields, EmptyParam);
ds1.Themes.Add(miThemeIndividualValue, 'wd','wd',EmptyParam);
thmJD:= ds1.Themes.item[1];
{ iNumRanges:=thmJD.ThemeProperties.NumRanges;
rc:=thmJD.ThemeProperties.RangeCategories[1];
rc.Style.SymbolFontColor:=clblue;
rc.Style.SymbolCharacter:=44;
rc:=thmJD.ThemeProperties.RangeCategories[iNumRanges];
rc.Style.SymbolFontColor:=clYellow;}
end;
procedure TFMap.BitBtn5Click(Sender: TObject);
begin
map1.currentTool := miRectSelectTool;
end;
procedure TFMap.Button2Click(Sender: TObject);
var
ds: CMapXDataSet;
Features:CMapXFeatures;
Feature :CMapXFeature;
Style: CMapXStyle;
i: integer;
begin
ds := Map1.Datasets.Add(miDataSetLayer, Map1.Layers.Item[1], EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -