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

📄 unitfeatureclass.pas

📁 此代码是关于mapgis的在
💻 PAS
字号:
unit UnitFeatureClass;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ComCtrls, Grids, ValEdit, frmTableDesigner,
  MapXContainer;

type
  TForm_FeatureClass = class(TForm)
    ListBox1: TListBox;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    Button6: TButton;
    Button5: TButton;
    ListView1: TListView;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    ValueListEditor1: TValueListEditor;
    Label1: TLabel;
    Label3: TLabel;
    edFeatureClassName: TEdit;
    GroupBox2: TGroupBox;
    cbTableStructCanChanged: TCheckBox;
    cbFeatureListCanChanged: TCheckBox;
    Label2: TLabel;
    memoScript: TMemo;
    Button7: TButton;
    Button8: TButton;
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure PageControl1Exit(Sender: TObject);
    procedure edFeatureClassNameExit(Sender: TObject);
    procedure memoScriptExit(Sender: TObject);
    procedure cbFeatureListCanChangedClick(Sender: TObject);
    procedure cbTableStructCanChangedClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    FTD:TForm_TableDesigner;
    procedure InitFace;
    procedure ClearItemFaceInfo;
    function GetCurrentFeatureClass:TFeatureClass;
    procedure AddFeatureItemToList(aBFt:TBusinessFeature);
    procedure ModifyFeatureItemToList(const Index:Integer; aBFt:TBusinessFeature);
    procedure SaveTableStructToMapFields(aFcItem:TFeatureClass);
  public
    { Public declarations }
  end;

var
  Form_FeatureClass: TForm_FeatureClass;

implementation

uses UnitDMLinks, DBTools, UnitProject, CustomTableStruct,
  Math, UnitFeatureConfig, BusinessDialogs, MapXBase;

{$R *.dfm}

procedure TForm_FeatureClass.FormShow(Sender: TObject);
begin
  InitFace;
end;

procedure TForm_FeatureClass.FormCreate(Sender: TObject);
begin
  FTD:=TForm_TableDesigner.Create(Self);
  FTD.Engine:=dm_Links.DBMachine1;
  FTD.SetDataBase(dbtUnknown, 1);
  FTD.DoAfterConnect;
  FTD.Manager.DataTypes.DefTypeName:='字符串';
  FTD.Parent:=TabSheet2;
  FTD.Align:=alClient;
  FTD.Show;
end;

procedure TForm_FeatureClass.FormDestroy(Sender: TObject);
begin
  FTD.Free;
end;

procedure TForm_FeatureClass.InitFace;
var
  i:Integer;
begin
  ListBox1.Items.Clear;
  for i:=0 to MapPrj.FeatureClasses.ItemCount-1 do
    ListBox1.Items.Add(MapPrj.FeatureClasses.Items[i].FeatureClassName);
  if ListBox1.Items.Count>0 then
  begin
    ListBox1.ItemIndex:=0;
    ListBox1.OnClick(ListBox1);
  end;
end;

procedure TForm_FeatureClass.Button7Click(Sender: TObject);
var
  aItem:TFeatureClass;
begin
  aItem:=MapPrj.FeatureClasses.Add;
  aItem.FeatureClassName:='新图形类';
  ListBox1.Items.Add(aItem.FeatureClassName);
  ListBox1.ItemIndex:=ListBox1.Items.Count-1;
  ListBox1.OnClick(ListBox1);
end;

procedure TForm_FeatureClass.ListBox1Click(Sender: TObject);
var
  i:Integer;
  aFcItem:TFeatureClass;
  aFldItem:TFieldDesignInfo;
  aRowIndex:Integer;
begin
  if ListBox1.ItemIndex>-1 then
  begin
    aFcItem:=MapPrj.FeatureClasses.Items[ListBox1.ItemIndex];
    edFeatureClassName.Text:=aFcItem.FeatureClassName;
    memoScript.Text:=aFcItem.Script;
    cbFeatureListCanChanged.Checked:=aFcItem.FeatureListCanChanged;
    cbTableStructCanChanged.Checked:=aFcItem.TableStructCanChanged;
    FTD.ClearTableColumns;
    for i:=0 to aFcItem.Fields.ItemCount-1 do
    begin
      aFldItem:=FTD.AddTableColumn(aRowIndex);
      aFldItem.fieldname:=aFcItem.Fields.Items[i].FieldName;
      aFldItem.displaylabel:=aFcItem.Fields.Items[i].FieldName;
      aFldItem.typename:=MapFieldTypeToLogicalFieldName(aFcItem.Fields.Items[i].FieldType);
      aFldItem.length:=aFcItem.Fields.Items[i].Length;
      aFldItem.prec:=aFcItem.Fields.Items[i].Prec;
      aFldItem.scale:=aFcItem.Fields.Items[i].Scale;
      aFldItem.allownull:=True;
      FTD.UpdateColumnData(i,  False);
    end;
    ListView1.Items.Clear;
    for i:=0 to aFcItem.FeatureList.ItemCount-1 do
      AddFeatureItemToList(aFcItem.FeatureList.Items[i]);
  end;
end;

procedure TForm_FeatureClass.Button8Click(Sender: TObject);
var
  Index:Integer;
begin
  Index:=ListBox1.ItemIndex;
  if Index>-1 then
  begin
    MapPrj.FeatureClasses.Delete(Index);
    Index:=min(Index, ListBox1.Items.Count-1);
    ClearItemFaceInfo;
    if Index>-1 then ListBox1.OnClick(ListBox1);
  end;
end;

procedure TForm_FeatureClass.ClearItemFaceInfo;
begin
  edFeatureClassName.Text:='';
  memoScript.Text:='';
  FTD.ClearTableColumns;
  while ValueListEditor1.RowCount>2 do
    ValueListEditor1.DeleteRow(2);
  ValueListEditor1.Cells[0, 1]:='';
  ValueListEditor1.Cells[1, 1]:='';
  ListView1.Items.Clear;
end;

procedure TForm_FeatureClass.Button6Click(Sender: TObject);
begin
  Close;
end;

procedure TForm_FeatureClass.SaveTableStructToMapFields(aFcItem:TFeatureClass);
var
  i:Integer;
  aFldItem:TFieldDesignInfo;
  aMapFld:TMapField;
begin
  aFcItem.Fields.Clear;
  for i:=0 to FTD.GetTableColumnCount-1 do
  begin
    aFldItem:=FTD.GetTableColumn(i);
    aMapFld:=aFcItem.Fields.Add;
    aMapFld.FieldName:=aFldItem.fieldname;
    aMapFld.FieldType:=LogicalFieldNameToMapFieldType(aFldItem.typename);
    aMapFld.Length:=aFldItem.length;
    aMapFld.Prec:=aFldItem.prec;
    aMapFld.Scale:=aFldItem.scale;
  end;
end;

procedure TForm_FeatureClass.PageControl1Exit(Sender: TObject);
var
  aFcItem:TFeatureClass;
begin
  aFcItem:=GetCurrentFeatureClass;
  if aFcItem<>nil then
    SaveTableStructToMapFields(aFcItem);
end;

function TForm_FeatureClass.GetCurrentFeatureClass: TFeatureClass;
begin
  if ListBox1.ItemIndex>-1 then
    Result:=MapPrj.FeatureClasses.Items[ListBox1.ItemIndex]
  else
    Result:=nil;
end;

procedure TForm_FeatureClass.edFeatureClassNameExit(Sender: TObject);
var
  aFcItem:TFeatureClass;
begin
  aFcItem:=GetCurrentFeatureClass;
  if aFcItem<>nil then
  begin
    aFcItem.FeatureClassName:=edFeatureClassName.Text;
    ListBox1.Items[ListBox1.ItemIndex]:=edFeatureClassName.Text;
  end;
end;

procedure TForm_FeatureClass.memoScriptExit(Sender: TObject);
var
  aFcItem:TFeatureClass;
begin
  aFcItem:=GetCurrentFeatureClass;
  if aFcItem<>nil then
    aFcItem.Script:=memoScript.Text;
end;

procedure TForm_FeatureClass.cbFeatureListCanChangedClick(Sender: TObject);
var
  aFcItem:TFeatureClass;
begin
  aFcItem:=GetCurrentFeatureClass;
  if aFcItem<>nil then
    aFcItem.FeatureListCanChanged:=cbFeatureListCanChanged.Checked;
end;

procedure TForm_FeatureClass.cbTableStructCanChangedClick(Sender: TObject);
var
  aFcItem:TFeatureClass;
begin
  aFcItem:=GetCurrentFeatureClass;
  if aFcItem<>nil then
    aFcItem.TableStructCanChanged:=cbTableStructCanChanged.Checked;
end;

procedure TForm_FeatureClass.Button1Click(Sender: TObject);
var
  aFcItem:TFeatureClass;
  aBFt:TBusinessFeature;
begin
  aFcItem:=GetCurrentFeatureClass;
  if aFcItem<>nil then
  begin
    aBFt:=AddFeatueItem(aFcItem);
    if aBFt<>nil then AddFeatureItemToList(aBFt);
  end;
end;

procedure TForm_FeatureClass.AddFeatureItemToList(aBFt:TBusinessFeature);
var
  aListItem:TListItem;
begin
  aListItem:=ListView1.Items.Add;
  aListItem.Caption:=aBFt.FeatureName;
  aListItem.SubItems.Add(GetShapeTypeName(aBFt.FeatureType));
// aListItem.SubItems.Add(GMapTools.m_Map.s);
end;

procedure TForm_FeatureClass.Button2Click(Sender: TObject);
var
  aFcItem:TFeatureClass;
  aBFt:TBusinessFeature;
begin
  aFcItem:=GetCurrentFeatureClass;
  if aFcItem<>nil then
  begin
    if ListView1.ItemIndex=-1 then
      WarningAbort('提示', '请选择要修改的图形记录!');
    aBFt:=aFcItem.FeatureList.Items[ListView1.ItemIndex];
    if ModifyFeatureItem(aBFt) then ModifyFeatureItemToList(ListView1.ItemIndex, aBFt);
  end;
end;

procedure TForm_FeatureClass.ModifyFeatureItemToList(const Index: Integer;
  aBFt: TBusinessFeature);
var
  aListItem:TListItem;
begin
  aListItem:=ListView1.Items[Index];
  aListItem.Caption:=aBFt.FeatureName;
  aListItem.SubItems.Add(GetShapeTypeName(aBFt.FeatureType));
// aListItem.SubItems.Add(GMapTools.m_Map.s);
end;

end.

⌨️ 快捷键说明

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