Ver Mensaje Individual
  #5  
Antiguo 05-03-2008
Avatar de axesys
axesys axesys is offline
Miembro
 
Registrado: ene 2007
Ubicación: Los Mochis Sinaloa
Posts: 208
Reputación: 18
axesys Va por buen camino
Hola Al,

Por lo que e leído sobre la herencia insertada que hablas según yo eso lo puedes hacer con los class helpers, puedes ver este video para que veas como

Class Helpers: Friend or Foe

Este es un ejemplo de como yo las estoy aplicando

Código Delphi [-]
unit udtsHelper;

interface

uses
  Classes, pFibDataSet;

type
  TFibDatasetHelper = class helper for TpFibDataSet
  public
    function CampoNombreCadena(sCampo: String): String;
    function CampoNombreEntero(sCampo: String): integer;
    function CampoNombreFlotante(sCampo: String): double;
    function CampoNombreFecha(sCampo: String): TDateTime;
    function CampoCadena(iIndice: integer): String;
    function CampoEntero(iIndice: integer): integer;
    function CampoFlotante(iIndice: integer): double;
    procedure CampoNombreBlob(sCampo: String; var strContenido: TMemoryStream);

    procedure CampoNombre(sCampo, sValor: string); overload;
    procedure CampoNombre(sCampo: string; iValor: Integer); overload;
    procedure CampoNombre(sCampo: string; dValor: Double); overload;
    procedure CampoNombre(sCampo: string; dtValor: TDateTime); overload;

    procedure ParametroNombre(sCampo, sValor: string); overload;
    procedure ParametroNombre(sCampo: string; iValor: Integer); overload;
    procedure ParametroNombre(sCampo: string; dValor: Double); overload;
    procedure ParametroNombre(sCampo: string; dtValor: TDateTime); overload;
  end;

implementation

uses
  DB;

{ TFibDatasetHelper }

function TFibDatasetHelper.CampoNombreCadena(sCampo: String): String;
begin
  Result:= FieldByName(sCampo).AsString;
end;

function TFibDatasetHelper.CampoNombreEntero(sCampo: String): integer;
begin
  Result:= FieldByName(sCampo).AsInteger;
end;

function TFibDatasetHelper.CampoNombreFlotante(sCampo: String): double;
begin
  Result:= FieldByName(sCampo).AsFloat;
end;

function TFibDatasetHelper.CampoNombreFecha(sCampo: String): TDateTime;
begin
  Result:= FieldByName(sCampo).AsDateTime;
end;

procedure TFibDatasetHelper.CampoNombre(sCampo: string; iValor: Integer);
begin
  FieldByName(sCampo).AsInteger:= iValor
end;

procedure TFibDatasetHelper.CampoNombre(sCampo, sValor: string);
begin
  FieldByName(sCampo).AsString:= sValor
end;

procedure TFibDatasetHelper.CampoNombre(sCampo: string; dtValor: TDateTime);
begin
  FieldByName(sCampo).AsDateTime:= dtValor
end;

procedure TFibDatasetHelper.CampoNombre(sCampo: string; dValor: Double);
begin
  FieldByName(sCampo).AsFloat:= dValor
end;

procedure TFibDatasetHelper.CampoNombreBlob(sCampo: String; var strContenido: TMemoryStream);
var
  fldCampo: TField;
  strStream: TStream;
begin

  if(not FieldByName(sCampo).IsNull) then
  begin
    fldCampo:= FieldByName(sCampo);
    strStream:= CreateBlobStream(fldCampo, bmRead);
    strContenido.CopyFrom(strStream, strStream.Size);
  end
  else
    strContenido.Clear;
end;

procedure TFibDatasetHelper.ParametroNombre(sCampo: string; iValor: Integer);
begin
  ParamByName(sCampo).AsInteger:= iValor
end;

procedure TFibDatasetHelper.ParametroNombre(sCampo, sValor: string);
begin
  ParamByName(sCampo).AsString:= sValor
end;

procedure TFibDatasetHelper.ParametroNombre(sCampo: string; dtValor: TDateTime);
begin
  ParamByName(sCampo).AsDateTime:= dtValor
end;

procedure TFibDatasetHelper.ParametroNombre(sCampo: string; dValor: Double);
begin
  ParamByName(sCampo).AsDouble:= dValor
end;

function TFibDatasetHelper.CampoCadena(iIndice: integer): String;
begin
  Result:= Fields[iIndice].AsString;
end;

function TFibDatasetHelper.CampoEntero(iIndice: integer): integer;
begin
  Result:= Fields[iIndice].AsInteger;
end;

function TFibDatasetHelper.CampoFlotante(iIndice: integer): double;
begin
  Result:= Fields[iIndice].AsFloat;
end;

end.
Responder Con Cita