📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleCtrls, MapObjects2_TLB, ExtCtrls, ColorGrd;
type
TForm1 = class(TForm)
Panel1: TPanel;
Map1: TMap;
cbbLayers: TComboBox;
Label1: TLabel;
Label2: TLabel;
cbbFields: TComboBox;
Label3: TLabel;
cbbValues: TComboBox;
ColorGrid1: TColorGrid;
procedure FormActivate(Sender: TObject);
procedure cbbLayersChange(Sender: TObject);
procedure cbbFieldsChange(Sender: TObject);
procedure cbbValuesChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormActivate(Sender: TObject);
var
CurrentLayer: imoMapLayer;
i: integer;
begin
CurrentLayer := coMapLayer.Create ;
for i := 0 to Map1.Layers.Count - 1 do
begin
CurrentLayer := ImoMapLayer(Map1.Layers.Item(i));
cbbLayers.Items.Add(CurrentLayer.Name);
end;
cbbLayers.ItemIndex := 0;
cbbLayers.OnChange(Sender);
end;
//提取字段名称
procedure TForm1.cbbLayersChange(Sender: TObject);
var
CurrentLayer: imoMapLayer;
i: integer;
MyTableDesc: imoTableDesc;
begin
CurrentLayer := coMapLayer.Create ;
MyTableDesc := coTableDesc.Create ;
CurrentLayer := ImoMapLayer(Map1.Layers.Item(cbbLayers.Text));
MyTableDesc := CurrentLayer.Records.TableDesc ;
cbbFields.Clear ;
for i := 0 to MyTableDesc.FieldCount - 1 do
begin
cbbFields.Items.Add(MyTableDesc.FieldName[i]);
end;
cbbFields.ItemIndex := 0;
end;
procedure TForm1.cbbFieldsChange(Sender: TObject);
var
MyStrings: imoStrings;
MyRecordSet: imoRecordSet;
CurrentLayer: imoMapLayer;
MyRenderer: imoValueMapRenderer; //为可创建对象
i: integer;
begin
MyStrings := coStrings.Create ;
CurrentLayer := coMapLayer.Create ;
MyRenderer := coValueMapRenderer.Create ;
CurrentLayer := ImoMapLayer(Map1.Layers.Item(cbbLayers.Text));
MyRecordSet := CurrentLayer.Records ;
//遍历数据 ,提取用户所选择的字段包含的值。
while not MyRecordSet.EOF do
begin
MyStrings.Add(MyRecordSet.Fields.Item(cbbFields.Text).ValueAsString);
MyRecordSet.MoveNext ;
end;
//设定MyRenderer属性
MyRenderer.Field := cbbFields.Text ;
MyRenderer.ValueCount := MyStrings.Count ;
for i := 0 to MyStrings.Count - 1 do
begin
MyRenderer.Value[i] := MyStrings.Item(i);
cbbValues.Items.Add(MyStrings.Item(i));
end;
CurrentLayer.Renderer := MyRenderer;
Map1.Refresh ;
end;
procedure TForm1.cbbValuesChange(Sender: TObject);
var
MyRenderer: imoValueMapRenderer;
CurrentLayer: imoMapLayer;
begin
MyRenderer := coValueMapRenderer.Create ;
CurrentLayer := coMapLayer.Create ;
CurrentLayer := imoMapLayer(Map1.Layers.Item(cbbLayers.Text));
MyRenderer := ImoValueMapRenderer(CurrentLayer.Renderer);
MyRenderer.Symbol[cbbValues.ItemIndex].Color := ColorGrid1.ForegroundColor ;
Map1.Refresh ;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -