📄 label.txt
字号:
unit MapLabel;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls ,MapObjects2_TLB, ComCtrls, OleCtrls, ComObj, ActiveX;
type
TLabelFrm = class(TForm)
CbbLayer: TComboBox;
CbbField: TComboBox;
CbbFontType: TComboBox;
EdtSize: TEdit;
BtApp: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
UpDown1: TUpDown;
procedure FormActivate(Sender: TObject);
procedure CbbLayerChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BtAppClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
LabelFrm: TLabelFrm;
implementation
uses Unitmain;
{$R *.dfm}
procedure TLabelFrm.FormActivate(Sender: TObject);
var
MapLayers: ImoMapLayer;
i: Integer;
begin
CbbLayer.Clear;
for i := 0 to mainfrm.mainmap.Layers.Count - 1 do
begin
MapLayers := ImoMapLayer(mainfrm.mainmap.Layers.Item(i));
CbbLayer.items.add(MapLayers.Name);
end;
CbbLayer.ItemIndex := 0; ///why?
CbbLayer.OnChange(Sender);
end;
procedure TLabelFrm.CbbLayerChange(Sender: TObject);
var
MyTableDesc:imoTableDesc;
i:integer;
begin
MyTableDesc:=CoTableDesc.Create;
Currentlayer:=ImoMaplayer(MainFrm.MainMap.Layers.Item(CbbLayer.Text));
MyTableDesc:=Currentlayer.Records.TableDesc;
CbbField.Clear;
for i:=0 to MyTableDesc.FieldCount-1 do
begin
CbbField.Items.Add(MyTableDesc.FieldName[i]);
//添加字段
end;
CbbField.ItemIndex:=0;
end;
procedure TLabelFrm.FormCreate(Sender: TObject);
begin
CbbFontType.Items:=Screen.Fonts;
CbbFontType.ItemIndex:=0;
UpDown1.Position:=1;
end;
procedure TLabelFrm.BtAppClick(Sender: TObject);
var
ly: IMoMapLayer;
lblren: IMoLabelRenderer;
lyrs: Layers;
ft: TFont;
oleFt: variant;
LayerName: string;
FieldName: string;
begin
LayerName := CbbLayer.Text;
FieldName := CbbField.Text;
ft := TFont.Create;
ft.name := CbbFontType.Text;
ft.size := UpDown1.Position;
oleFt := FontToOleFont(ft);
lyrs := IMoLayers(mainfrm.mainmap.layers);
ly := CoMaplayer.Create;
ly := IMoMapLayer(lyrs.item(LayerName));
lblren :=CoLabelRenderer.Create;
lblren.field := FieldName;
lblren.SymbolField := FieldName;
lblren.symbol[0].font := IFontDisp(IDispatch(oleFt));
lblren.AllowDuplicates := false;
ly.renderer := lblren;
mainfrm.mainmap.refresh;
ft.Free;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -