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

📄 ezibgis.pas

📁 很管用的GIS控件
💻 PAS
📖 第 1 页 / 共 5 页
字号:
End;

Function TEzIBTable.FieldGet( Const FieldName: String ): String;
Begin
  OpenIBSQL( Format( 'SELECT %s FROM %s WHERE uid = %d', [FieldName, Self.TheTableName, FCurrRecno] ) );
  result := Dataset.Fields[0].AsTrimString;
  IBCommitTrans( Dataset );
  Dataset.Close;
End;

Function TEzIBTable.FieldGetN( FieldNo: integer ): String;
Begin
  OpenIBSQL( Format( 'SELECT * FROM %s WHERE uid = %d', [Self.TheTableName, FCurrRecno] ) );
  result := Dataset.Fields[FieldNo-1].AsTrimString;
  IBCommitTrans( Dataset );
  Dataset.Close;
End;

Function TEzIBTable.FieldLen( FieldNo: integer ): integer;
Begin
  Result:=0;
End;

Function TEzIBTable.FieldNo( Const FieldName: String ): integer;
Begin
  OpenIBSQL( Format( 'SELECT * FROM %s WHERE uid = %d', [Self.TheTableName, FCurrRecno] ) );
  result := Dataset.FieldIndex[ FieldName ] + 1;
  IBCommitTrans( Dataset );
  Dataset.Close;
End;

Function TEzIBTable.TheTableName: string;
begin
  Result:= 'ENT_' + FLayer.Name;
end;

Function TEzIBTable.FieldType( FieldNo: integer ): char;
Begin
  OpenIBSQL( Format( 'SELECT * FROM %s WHERE uid = %d', [ Self.TheTableName, FCurrRecno] ) );
  case Dataset.Fields[ FieldNo-1 ].SQLType of
    SQL_TEXT, SQL_VARYING:
       Result:= 'C';
    SQL_DOUBLE, SQL_FLOAT, SQL_D_FLOAT:
       Result:= 'N';
    SQL_LONG, SQL_SHORT, SQL_INT64:
       Result:= 'N';
    SQL_TIMESTAMP, SQL_TYPE_TIME, SQL_TYPE_DATE:
       Result:= 'D';
    SQL_BLOB: Result:= 'B';
  end;
  IBCommitTrans( Dataset );
  Dataset.Close;
End;

Function TEzIBTable.Find( Const ss: String; IsExact, IsNear: boolean ): boolean;
Begin
  Result:=false;
End;

Function TEzIBTable.FloatGet( Const Fieldname: String ): Double;
Begin
  OpenIBSQL( Format( 'SELECT %s FROM %s WHERE uid = %d', [FieldName, Self.TheTableName, FCurrRecno] ) );
  result := Dataset.Fields[0].AsDouble;
  IBCommitTrans( Dataset );
  Dataset.Close;
End;

Function TEzIBTable.FloatGetN( FieldNo: Integer ): Double;
Begin
  OpenIBSQL( Format( 'SELECT * FROM %s WHERE uid = %d', [Self.TheTableName, FCurrRecno] ) );
  result := Dataset.Fields[FieldNo-1].AsDouble;
  IBCommitTrans( Dataset );
  Dataset.Close;
End;

Function TEzIBTable.IndexCount: integer;
Begin
  result := 0;  // inexact
End;

Function TEzIBTable.IndexAscending( Value: integer ): boolean;
Begin
  Result := true;   // default e inexact
End;

Function TEzIBTable.Index( Const INames, Tag: String ): integer;
Begin
  // nothing to do here
End;

Function TEzIBTable.IndexCurrent: String;
Begin
  result := '';
End;

Function TEzIBTable.IndexUnique( Value: integer ): boolean;
Begin
  Result := true;
End;

Function TEzIBTable.IndexExpression( Value: integer ): String;
Begin
  result := '';
End;

Function TEzIBTable.IndexTagName( Value: integer ): String;
Begin
  result := '';
End;

Function TEzIBTable.IndexFilter( Value: integer ): String;
Begin
  result := '';
End;

Function TEzIBTable.IntegerGet( Const FieldName: String ): Integer;
Begin
  OpenIBSQL( Format( 'SELECT %s FROM %s WHERE uid = %d', [FieldName, Self.TheTableName, FCurrRecno] ) );
  result := Dataset.Fields[0].AsInteger;
  IBCommitTrans( Dataset );
  Dataset.Close;
End;

Function TEzIBTable.IntegerGetN( FieldNo: integer ): Integer;
Begin
  OpenIBSQL( Format( 'SELECT * FROM %s WHERE uid = %d', [Self.TheTableName, FCurrRecno] ) );
  result := Dataset.Fields[FieldNo-1].AsInteger;
  IBCommitTrans( Dataset );
  Dataset.Close;
End;

Function TEzIBTable.LogicGet( Const FieldName: String ): Boolean;
Begin
  OpenIBSQL( Format( 'SELECT %s FROM %s WHERE uid = %d', [FieldName, Self.TheTableName, FCurrRecno] ) );
  result := Dataset.Fields[0].AsString = 'Y';
  IBCommitTrans( Dataset );
  Dataset.Close;
End;

Function TEzIBTable.LogicGetN( FieldNo: integer ): Boolean;
Begin
  OpenIBSQL( Format( 'SELECT * FROM %s WHERE uid = %d', [Self.TheTableName, FCurrRecno] ) );
  result := Dataset.Fields[FieldNo-1].AsString = 'Y';
  IBCommitTrans( Dataset );
  Dataset.Close;
End;

procedure TEzIBTable.MemoSave( Const FieldName: String; stream: tstream );
Begin
  // don't save with this
End;

Procedure TEzIBTable.MemoSaveN( FieldNo: integer; stream: tstream );
Begin
  // don't save with this
End;

Function TEzIBTable.MemoSize( Const FieldName: String ): Integer;
Begin
  // don't use this
End;

Function TEzIBTable.MemoSizeN( FieldNo: integer ): Integer;
Begin
  // don't use this
End;

Function TEzIBTable.RecordCount: Integer;
Begin
  result := FLayer.GetRecordCount;
End;

Function TEzIBTable.StringGet( Const FieldName: String ): String;
Begin
  OpenIBSQL( Format( 'SELECT %s FROM %s WHERE uid = %d', [FieldName, Self.TheTableName, FCurrRecno] ) );
  result := Dataset.Fields[0].AsString;
  IBCommitTrans( Dataset );
  Dataset.Close;
End;

Function TEzIBTable.StringGetN( FieldNo: integer ): String;
Begin
  OpenIBSQL( Format( 'SELECT * FROM %s WHERE uid = %d', [Self.TheTableName, FCurrRecno] ) );
  result := Dataset.Fields[FieldNo-1].AsString;
  IBCommitTrans( Dataset );
  Dataset.Close;
End;

Procedure TEzIBTable.DatePut( Const FieldName: String; value: TDateTime );
Begin
  ExecuteIBSQL( Format( 'UPDATE %s SET %s = ''%s'' WHERE uid = %d', [Self.TheTableName, FieldName, FormatDateTime( 'm/d/yyyy', Value ), FCurrRecno] ) );
End;

Procedure TEzIBTable.DatePutN( FieldNo: integer; value: TDateTime );
Begin
  ExecuteIBSQL( Format( 'UPDATE %s SET %s = ''%s'' WHERE uid = %d', [Self.TheTableName, Self.Field(FieldNo), FormatDateTime( 'm/d/yyyy', Value ), FCurrRecno] ) );
End;

Procedure TEzIBTable.Delete;
Begin
  // nothing to do here
End;

Procedure TEzIBTable.Edit;
Begin
  // don't use this
End;

Procedure TEzIBTable.FieldPut( Const FieldName, Value: String );
var
  Code: Integer;
  ValFloat: Double;
Begin
  case FieldType( FieldNo(FieldName) ) Of
    'C': StringPut( FieldName,Value);
    'N':
      Begin
        Val( Trim(Value), ValFloat, Code);
        If Code = 0 then
          FloatPut( FieldName,ValFloat )
        else
          FloatPut( FieldName, 0 );
      End;
    'D': DatePut( FieldName,StrToDate(Trim(Value)));
    'B': ;
  end;
End;

Procedure TEzIBTable.FieldPutN( FieldNo: integer; Const Value: String );
var
  Code: Integer;
  ValFloat: Double;
Begin
  case FieldType( FieldNo ) Of
    'C': StringPutN( FieldNo,Value);
    'N':
      Begin
        Val( Trim(Value), ValFloat, Code);
        If Code = 0 then
          FloatPutN( FieldNo,ValFloat )
        else
          FloatPutN( FieldNo, 0 );
      End;
    'D': DatePutN( FieldNo,StrToDate(Trim(Value)));
    'B': ;
  end;
End;

Procedure TEzIBTable.First;
Begin
  // don't use this
End;

Procedure TEzIBTable.FloatPut( Const FieldName: String; Const Value: Double );
Begin
  ExecuteIBSQL( Format( 'UPDATE %s SET %s = %.6f WHERE uid = %d', [Self.TheTableName, FieldName, Value, FCurrRecno] ) );
End;

Procedure TEzIBTable.FloatPutN( FieldNo: integer; Const Value: Double );
Begin
  ExecuteIBSQL( Format( 'UPDATE %s SET %s = %.6f WHERE uid = %d', [Self.TheTableName, Self.Field(FieldNo), Value, FCurrRecno] ) );
End;

Procedure TEzIBTable.FlushDB;
Begin
  // nothing to do here
End;

Procedure TEzIBTable.Go( n: Integer );
Begin
  FCurrRecno:= n ;
End;

Procedure TEzIBTable.IndexOn( Const IName, tag, keyexp, forexp: String;
  uniq: TEzIndexUnique; ascnd: TEzSortStatus );
Begin
  // nothing to do here
End;

Procedure TEzIBTable.IntegerPut( Const Fieldname: String; Value: Integer );
Begin
  ExecuteIBSQL( Format( 'UPDATE %s SET %s = %d WHERE uid = %d', [Self.TheTableName, FieldName, Value, FCurrRecno] ) );
End;

Procedure TEzIBTable.IntegerPutN( FieldNo: integer; Value: Integer );
Begin
  ExecuteIBSQL( Format( 'UPDATE %s SET %s = %d WHERE uid = %d', [Self.TheTableName, Self.Field(FieldNo), Value, FCurrRecno] ) );
End;

Procedure TEzIBTable.Last;
Begin
  // don't use this
End;

Procedure TEzIBTable.LogicPut( Const fieldname: String; value: boolean );
var
  yn: string;
Begin
  if value then yn:= 'Y' else yn:= 'N';
  ExecuteIBSQL( Format( 'UPDATE %s SET %s = ''%s'' WHERE uid = %d', [Self.TheTableName, fieldname, yn, FCurrRecno] ) );
End;

Procedure TEzIBTable.LogicPutN( fieldno: integer; value: boolean );
var
  yn: string;
Begin
  if value then yn:= 'Y' else yn:= 'N';
  ExecuteIBSQL( Format( 'UPDATE %s SET %s = ''%s'' WHERE uid = %d', [Self.TheTableName, Self.field(fieldno), yn, FCurrRecno] ) );
End;

Procedure TEzIBTable.MemoLoad( Const fieldname: String; stream: tstream );
Begin
  // don't use this
End;

Procedure TEzIBTable.MemoLoadN( fieldno: integer; stream: tstream );
Begin
  // don't use this
End;

Procedure TEzIBTable.Next;
Begin
  // don't use this
End;

Procedure TEzIBTable.Pack;
Begin
  // nothing to do here
End;

Procedure TEzIBTable.Post;
Begin
  // don't use this
End;

Procedure TEzIBTable.Prior;
Begin
  // don't use this
End;

Procedure TEzIBTable.Recall;
Begin
  // don't use this
End;

Procedure TEzIBTable.Refresh;
Begin
  // don't use this
End;

Procedure TEzIBTable.Reindex;
Begin
  // don't use this
End;

Procedure TEzIBTable.SetTagTo( Const TName: String );
Begin
  // don't use this
End;

Procedure TEzIBTable.SetUseDeleted( tf: boolean );
Begin
  // don't use this
End;

Procedure TEzIBTable.StringPut( Const fieldname, value: String );
Begin
  ExecuteIBSQL( Format( 'UPDATE %s SET %s = ''%s'' WHERE uid = %d', [Self.TheTableName, fieldname, value, FCurrRecno] ) );
End;

Procedure TEzIBTable.StringPutN( fieldno: integer; Const value: String );
Begin
  ExecuteIBSQL( Format( 'UPDATE %s SET %s = ''%s'' WHERE uid = %d', [Self.TheTableName, Self.field(fieldno), value, FCurrRecno] ) );
End;

Procedure TEzIBTable.Zap;
Begin
  // don't use this
End;

function TEzIBTable.DBTableExists( const TableName: string ): Boolean;
begin
  result:= true;
end;

Procedure TEzIBTable.BeginTrans;
begin
  // don't use this
end;

Procedure TEzIBTable.EndTrans;
begin
  // don't use this
end;

Procedure TEzIBTable.RollbackTrans;
begin
  // don't use this
end;

{$IFDEF BCB}
function TEzIBTable.GetLayer: TEzIBLayer;
begin
  Result := FLayer;
end;

procedure TEzIBTable.SetLayer(const Value: TEzIBLayer);
begin
  FLayer := Value;
end;
{$ENDIF}

{-------------------------------------------------------------------------------}
{                  TEzIBLayerInfo - class implementation                         }
{-------------------------------------------------------------------------------}

Constructor TEzIBLayerInfo.Create( Layer: TEzBaseLayer );
Begin
  Inherited Create( Layer );

⌨️ 快捷键说明

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