www.pudn.com > sybase_dblib4.zip > sybcontrol.pas


unit sybcontrol; 
 
interface 
 
type 
  SybObjectname = string[30]; 
 
type 
 TSybControl = class(TComponent) 
  private 
    { Private declarations } 
    FSql         :ansistring; 
    FDbname      :SybObjectname; 
    FDesignActive:boolean; 
    procedure SetDbProc(Value :integer); 
    procedure SetSql(Value :ansistring); 
    procedure SetDbName(Value :SybObjectname); 
    procedure SetDesignActive(Value :boolean); 
  protected 
    { Protected declarations } 
     procedure get_databases; 
     procedure get_dbproc; 
  public 
    { Public declarations } 
    SqlCommand:array[0..4096] of char; 
    dbprocc:integer; 
    Login,Retcode,retcode2,nocols,col:integer; 
    databases:array[1..10] of SybObjectname; 
    databasedbprocs:array[1..10] of integer; 
    databasecount :integer; 
    DbProc :integer; 
    constructor create(AOwner:TComponent); override; 
    procedure addsql(Value :ansistring); 
    procedure clearsql; 
{   function sqlexec:integer;} 
  published 
    { Published declarations } 
    property DbName :SybObjectname read FDbName write setDbname; 
    property Sql :string read FSql write SetSql; 
    property DesignActive:boolean read fdesignactive write setdesignactive default false; 
  end; 
 
implementation 
 
uses sybase32; 
 
procedure TSybcomponent.SetDbProc(Value :integer); 
begin 
  Dbproc:=Value; 
  Dbprocc:=Value; 
end; 
 
procedure TSybcomponent.SetSql(Value :ansistring); 
begin 
  FSql:=Value; 
end; 
 
procedure TSybcomponent.Setdesignactive(Value :boolean); 
begin 
  if value then 
  begin 
    databasecount:=0; 
    get_databases; 
    get_dbproc; 
  end; 
  Fdesignactive:=Value; 
end; 
 
procedure TSybcomponent.addsql(Value :ansistring); 
begin 
  FSql:=FSql + Value; 
end; 
 
procedure TSybcomponent.clearsql; 
begin 
  FSql:=''; 
end; 
 
procedure Tsybcomponent.SetDbname(Value :SybObjectname); 
var i:integer; 
begin 
{  for i:=1 to sybase_components.databasecount do 
    showmessage(sybase_components.databaselist[i]);} 
  FDbname:=value; 
  get_dbproc; 
end; 
 
procedure TSybcomponent.get_databases; 
var frm,own_frm :tform; 
    i,j   :integer; 
begin 
  databasecount:=0; 
  own_frm:=getparentform(self); 
  for i:=0 to own_frm.ComponentCount-1 do 
    if (own_frm.Components[i] is TSybDatabase) 
      or (own_frm.Components[i] is TSybDB) then 
    begin 
      inc(databasecount); 
      if own_frm.Components[i] is TSybDatabase then 
      begin 
        databases[databasecount]:=TSybdatabase(own_frm.components[i]).name; 
        databasedbprocs[databasecount]:=TSybdatabase(own_frm.components[i]).dbproc; 
      end 
      else 
      begin 
        databases[databasecount]:=TSybDB(own_frm.components[i]).name; 
        databasedbprocs[databasecount]:=TSybDB(own_frm.components[i]).dbproc; 
      end 
    end; 
 
  with application do 
  begin 
    for j:=0 to componentcount - 1 do 
    begin 
      if (components[j] is TForm) then 
      begin 
        Frm:=TForm(components[j]); 
        for i:=0 to frm.ComponentCount-1 do 
        begin 
          if (frm.Components[i] is TSybDatabase) 
            or (frm.Components[i] is TSybDB) then 
          begin 
            inc(databasecount); 
            if frm.Components[i] is TSybDatabase then 
            begin 
              databases[databasecount]:=TSybdatabase(frm.components[i]).name; 
              databasedbprocs[databasecount]:=TSybdatabase(frm.components[i]).dbproc; 
            end 
            else 
            begin 
              databases[databasecount]:=TSybDB(frm.components[i]).name; 
              databasedbprocs[databasecount]:=TSybDB(frm.components[i]).dbproc; 
            end 
          end; 
        end; 
      end; 
    end; 
  end; 
 
end; 
 
procedure TSybcomponent.get_dbproc; 
var i:integer; 
begin 
  for i:=1 to databasecount do 
  begin 
    if FDbName = databases[i] then 
    begin 
      setdbproc(databasedbprocs[i]); 
      exit; 
    end; 
  end; 
end; 
 
 
 
end.