📄 unitfeatureclass.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 + -