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

📄 ezindygis.pas

📁 很管用的GIS控件
💻 PAS
📖 第 1 页 / 共 5 页
字号:
Begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_RECALL');
    WriteLn(FLayer.Name);
  End;
End;

Procedure TEzIndyTable.Refresh;
Begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_REFRESH');
    WriteLn(FLayer.Name);
  End;
End;

Procedure TEzIndyTable.Reindex;
Begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_REINDEX');
    WriteLn(FLayer.Name);
  End;
End;

Procedure TEzIndyTable.SetTagTo( Const TName: String );
Begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_SETTAGTO');
    WriteLn(FLayer.Name);
    WriteLn(TName);
  End;
End;

Procedure TEzIndyTable.SetUseDeleted( tf: Boolean );
Begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_SETUSEDELETED');
    WriteLn(FLayer.Name);
    WriteSmallInt(Ord(tf));
  End;
End;

Procedure TEzIndyTable.StringPut( Const fieldname, value: String );
Begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_STRINGPUT');
    WriteLn(FLayer.Name);
    WriteLn(FieldName);
    WriteLn(value);
  End;
End;

Procedure TEzIndyTable.StringPutN( fieldno: integer; Const value: String );
Begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_STRINGPUTN');
    WriteLn(FLayer.Name);
    WriteInteger(FieldNo);
    WriteLn(value);
  End;
End;

Procedure TEzIndyTable.Zap;
Begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_ZAP');
    WriteLn(FLayer.Name);
  End;
End;

Function TEzIndyTable.DBCreateTable( Const fname: String; AFieldList: TStringList ): boolean;
var
  TempStrings: TStrings;
begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_DBCREATETABLE');
    WriteLn(fname);
    TempStrings:= TStringList.Create;
    try
      If Assigned(AFieldList) Then
        TempStrings.Assign(AFieldList);
      WriteStrings(TempStrings, true);
    finally
      TempStrings.Free;
    end;
  End;
end;

Function TEzIndyTable.DBTableExists( const TableName: string ): Boolean;
begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_DBTABLEEXITS');
    WriteLn(TableName);
    Result:=ReadSmallInt<>0;
  End;
end;

Function TEzIndyTable.DBDropTable( const TableName: string): Boolean;
begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_DBDROPTABLE');
    WriteLn(TableName);
    Result:=ReadSmallInt<>0;
  End;
end;

Function TEzIndyTable.DBDropIndex( const TableName: string): Boolean;
begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_DBDROPINDEX');
    WriteLn(TableName);
    Result:=ReadSmallInt<>0;
  End;
end;

Function TEzIndyTable.DBRenameTable( const Source, Target: string): Boolean;
begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_DBRENAMETABLE');
    WriteLn(Source);
    WriteLn(Target);
    Result:=ReadSmallInt<>0;
  End;
end;

Procedure TEzIndyTable.BeginTrans;
begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_BEGINTRANS');
    WriteLn(FLayer.Name);
  End;
end;

Procedure TEzIndyTable.EndTrans;
begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_ENDTRANS');
    WriteLn(FLayer.Name);
  End;
end;

Procedure TEzIndyTable.RollbackTrans;
begin
  with TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient do
  Begin
    WriteLn('DBT_ROLLBACKTRANS');
    WriteLn(FLayer.Name);
  End;
end;


{-------------------------------------------------------------------------------}
{                  TEzIndyLayerInfo - class implementation                         }
{-------------------------------------------------------------------------------}

Function TEzIndyLayerInfo.GetTCPClient: TIdTCPClient;
begin
  Result:= TEzIndyClientGIS(FLayer.Layers.GIS).FTCPClient;
end;

Function TEzIndyLayerInfo.BufferGIS: TEzGIS;
Begin
  Result:= TEzIndyClientGIS(FLayer.Layers.GIS).FBufferGIS;
End;

Function TEzIndyLayerInfo.IsBuffered: Boolean;
Begin
  With TEzIndyClientGIS(FLayer.Layers.GIS) Do
    Result:= FClientBuffered And FBufferGIS.Active;
End;

Function TEzIndyLayerInfo.GetVisible: Boolean;
Var
  Layer: TEzBaseLayer;
Begin
  Result:= False;
  If GetTCPClient<>Nil Then
  Begin
    { read from server if not buffered }
    if Not IsBuffered Then
      with GetTCPClient do
      Begin
        WriteLn('LI_GETVISIBLE');
        WriteLn(FLayer.Name);
        Result := ReadSmallInt<>0;
      End
    Else
    Begin
      { read from the buffer GIS }
      Layer:= BufferGIS.Layers.LayerByName(Flayer.Name);
      If Layer <> Nil Then
        Result:= Layer.LayerInfo.Visible;
    End;
  End;
End;

Procedure TEzIndyLayerInfo.SetVisible( Value: Boolean );
Var
  Layer: TEzBaseLayer;
Begin
  If GetTCPClient<>Nil then
  Begin
    { always write to the server }
    with GetTCPClient do
    Begin
      WriteLn('LI_SETVISIBLE');
      WriteLn(FLayer.Name);
      WriteSmallInt(Ord(Value));
    End;
    { update the buffer GIS }
    Layer:= BufferGIS.Layers.LayerByName(FLayer.Name);
    If Layer <> Nil Then
      Layer.LayerInfo.Visible:= Value;
  End;
  with FLayer.Layers.GIS do
    If Assigned( OnVisibleLayerChange ) Then
      OnVisibleLayerChange( FLayer, FLayer.Name );
  SetModifiedStatus( FLayer );
End;

Function TEzIndyLayerInfo.GetSelectable: Boolean;
Var
  Layer: TEzBaseLayer;
Begin
  Result:= False;
  If GetTCPClient<>Nil Then
  Begin
    if Not IsBuffered  Then
      with GetTCPClient do
      Begin
        WriteLn('LI_GETSELECTABLE');
        WriteLn(FLayer.Name);
        Result := ReadSmallInt<>0;
      End
    Else
    Begin
      Layer:= BufferGIS.Layers.LayerByName(Flayer.Name);
      If Layer <> Nil Then
        Result:= Layer.LayerInfo.Selectable;
    End;
  End;
End;

Procedure TEzIndyLayerInfo.SetSelectable( Value: Boolean );
Var
  Layer: TEzBaseLayer;
Begin
  If (GetTCPClient<>Nil) Then
  Begin
    with GetTCPClient do
    Begin
      WriteLn('LI_SETSELECTABLE');
      WriteLn(FLayer.Name);
      WriteSmallInt(Ord(value));
    End;
    { update the buffer GIS }
    Layer:= BufferGIS.Layers.LayerByName(FLayer.Name);
    If Layer <> Nil Then Layer.LayerInfo.Selectable:= Value;
  End;
  with FLayer.Layers.GIS do
    If Assigned( OnSelectableLayerChange ) Then
      OnSelectableLayerChange( FLayer, FLayer.Name );
  SetModifiedStatus( FLayer );
End;

Function TEzIndyLayerInfo.GetIsCosmethic: Boolean;
Var
  Layer: TEzBaseLayer;
Begin
  Result:= False;
  If GetTCPClient<>Nil Then
  Begin
    if Not IsBuffered  Then
      with GetTCPClient do
      Begin
        WriteLn('LI_GETISCOSMETHIC');
        WriteLn(FLayer.Name);
        Result:= ReadSmallInt<>0;
      End
    Else
    Begin
      Layer:= BufferGIS.Layers.LayerByName(Flayer.Name);
      If Layer <> Nil Then
        Result:= Layer.LayerInfo.IsCosmethic;
    End;
  End ;
End;

Procedure TEzIndyLayerInfo.SetIsCosmethic( value: Boolean );
Var
  Layer: TEzBaseLayer;
Begin
  If GetTCPClient<>Nil Then
  Begin
    with GetTCPClient do
    Begin
      WriteLn('LI_SETISCOSMETHIC');
      WriteLn(FLayer.Name);
      WriteSmallInt(Ord(value));
    End;
    { update the buffer GIS }
    Layer:= BufferGIS.Layers.LayerByName(FLayer.Name);
    If Layer <> Nil Then
      Layer.LayerInfo.IsCosmethic:= Value;
  End;
End;

Function TEzIndyLayerInfo.GetExtension: TEzRect;
Var
  Layer: TEzBaseLayer;
Begin
  Result:= INVALID_EXTENSION;
  If GetTCPClient<>Nil Then
  Begin
    if Not IsBuffered  Then
      with GetTCPClient do
      Begin
        WriteLn('LI_GETEXTENSION');
        WriteLn(FLayer.Name);
        ReadBuffer(Result.X1,SizeOf(double));
        ReadBuffer(Result.Y1,SizeOf(double));
        ReadBuffer(Result.X2,SizeOf(double));
        ReadBuffer(Result.Y2,SizeOf(double));
      End
    Else
    Begin
      Layer:= BufferGIS.Layers.LayerByName(Flayer.Name);
      If Layer <> Nil Then
        Result:= Layer.LayerInfo.Extension;
    End;
  End
End;

Procedure TEzIndyLayerInfo.SetExtension( Const Value: TEzRect );
Var
  Layer: TEzBaseLayer;
Begin
  If GetTCPClient<>Nil Then
  Begin
    with GetTCPClient do
    Begin
      WriteLn('LI_SETEXTENSION');
      WriteLn(FLayer.Name);
      WriteBuffer(value.X1,SizeOf(double));
      WriteBuffer(value.Y1,SizeOf(double));
      WriteBuffer(value.X2,SizeOf(double));
      WriteBuffer(value.Y2,SizeOf(double));
    End;
    { update the buffer GIS }
    Layer:= BufferGIS.Layers.LayerByName(FLayer.Name);
    If Layer <> Nil Then
      Layer.LayerInfo.Extension:= Value;
  End;
  SetModifiedStatus( FLayer );
End;

Function TEzIndyLayerInfo.GetIDCounter: integer;
Begin
  Result:= 0;
  If GetTCPClient<>Nil Then
  Begin
    { IDCounter must be read from server because it is used for new insertions }
    //if Not IsBuffered  Then
      with GetTCPClient do
      Begin
        WriteLn('LI_GETIDCOUNTER');
        WriteLn(FLayer.Name);
        Result:= ReadInteger;
      End;
    {Else
    Begin
      Layer:= BufferGIS.Layers.LayerByName(Flayer.Name);
      If Layer <> Nil Then
        Result:= Layer.LayerInfo.IDCounter;
    End; }
  End;
End;

Procedure TEzIndyLayerInfo.SetIDCounter( Value: integer );
Begin
  If GetTCPClient<>Nil Then
    with GetTCPClient do
    Begin
      WriteLn('LI_SETIDCOUNTER');
      WriteLn(FLayer.Name);
      WriteInteger(value);
    End;
    // nothing to update on client
End;

Function TEzIndyLayerInfo.GetIsAnimationLayer: Boolean;
Var
  Layer: TEzBaseLayer;
Begin
  Result:= False;
  If GetTCPClient<>Nil Then
  Begin
    if Not IsBuffered  Then
      with GetTCPClient do
      Begin
        WriteLn('LI_GETISANIMATION');
        WriteLn(FLayer.Name);
        Result:= ReadSmallInt<>0;
      End
    Else
    Begin
      Layer:= BufferGIS.Layers.LayerByName(Flayer.Name);
      If Layer <> Nil Then
        Result:= Layer.LayerInfo.IsAnimationLayer;
    End;
  End;
End;

Procedure TEzIndyLayerInfo.SetIsAnimationLayer( Value: Boolean );
Var
  Layer: TEzBaseLayer;
Begin
  If GetTCPClient<>Nil Then
  Begin
    with GetTCPClient do
    Begin
      WriteLn('LI_SETISANIMATION');
      WriteLn(FLayer.Name);
      WriteSmallInt(Ord(value));
    End;
    { update the buffer GIS }
    Layer:= BufferGIS.Layers.LayerByName(FLayer.Name);
    If Layer <> Nil Then 
      Layer.LayerInfo.IsAnimationLayer:= Value;
  End;
End;

Function TEzIndyLayerInfo.GetIsIndexed: Boolean;
Var
  Layer: TEzBaseLayer;
Begin
  Result:= True;  // by default
  If GetTCPClient<>Nil Then
  Begin
    if Not IsBuffered  Then
      with GetTCPClient do
      Begin
        WriteLn('LI_GETISINDEXED');
        WriteLn(FLayer.Name);
        Result:= ReadSmallInt<>0;
      End
    Else
    Begin
    

⌨️ 快捷键说明

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