Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 19-02-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola pape19.

Decir la manera "correcta" de hacerlo sería como decir que tu código es incorrecto y no es así, por que como mencionas, funciona bién. Pero creo que se le podrían hacer algunas mejoras.

Si bién está probado, el código siguiente es sólo un ejemplo de guía.
Código Delphi [-]
unit uEmpleado;

interface

uses
  Windows, Messages, SysUtils, Controls;

type
  TDataSetAction = (daEdit, daInsert, daAppend);

type
  TEmpleado = class(TObject)
  private
    FNombre: string;
    FNacimiento: TDate;
    FReferencia: Integer;
    procedure SetNacimiento(const Value: TDate);
    procedure SetNombre(const Value: string);
    procedure SetReferencia(const Value: Integer);
    procedure SetAction(const Value: TDataSetAction);
  public
    constructor Create;
    procedure Save;
    procedure Delete;
    property Action: TDataSetAction write SetAction;
    property Nombre: string read FNombre write SetNombre;
    property Nacimiento: TDate read FNacimiento write SetNacimiento;
    property Referencia: Integer read FReferencia write SetReferencia;
    destructor Destroy; override;
  end;

implementation

uses Unit3; // DataModule

constructor TEmpleado.Create;
begin
  inherited;
  with DataModule1 do
  begin
    if not IBTransaction1.InTransaction then
      IBTransaction1.StartTransaction;
    IBDataSet1.Open;
  end;
end;

procedure TEmpleado.SetAction(const Value: TDataSetAction);
begin
   with DataModule1.IBDataSet1 do
    case Value of
      daEdit: Edit;
      daInsert: Insert;
      daAppend: Append;
    end;
end;

procedure TEmpleado.SetNombre(const Value: string);
begin
  if Value <> FNombre then
    FNombre := Value;
end;

procedure TEmpleado.SetNacimiento(const Value: TDate);
begin
  if Value <> FNacimiento then
    FNacimiento := Value;
end;

procedure TEmpleado.SetReferencia(const Value: Integer);
begin
  if Value <> FReferencia then
    FReferencia := Value;
end;

procedure TEmpleado.Save;
begin
  if Nombre = EmptyStr then
    raise Exception.Create('Error: Nombre es un dato requerido');
  // aquí pueden ir otras comprobaciones...
  with DataModule1 do
  begin
    IBDataSet1.FieldByName('REFERENCIA').AsInteger := Referencia;
    IBDataSet1.FieldByName('NOMBRE').AsString   := Nombre;
    IBDataSet1.FieldByName('FECHA_NAC').AsDateTime := Nacimiento;
    IBDataSet1.Post;
  end;
end;

procedure TEmpleado.Delete;
begin
  if MessageBox(0,'¿ Desea eliminar el registro ?',
                '',MB_ICONQUESTION+MB_YESNO)= IDYES then
    DataModule1.IBDataSet1.Delete;
end;

destructor TEmpleado.Destroy;
begin
  with DataModule1 do
  begin
    IBDataSet1.Close;
    IBTransaction1.Commit;
  end;
  inherited;
end;

end.

Un ejemplo de uso:
Código Delphi [-]
...
implementation

uses uEmpleado;


var
  Empleado: TEmpleado;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Empleado:= TEmpleado.Create;
end;

// Edit
procedure TForm1.btnEditClick(Sender: TObject);
begin
  with Empleado do
  begin
    Action:= daEdit;
    Referencia:= IntToStr(EditRef.Text);
    Nombre:= EditNomb.Text;
    Nacimiento:= DateToStr(EditNac.Text);
    Save;
  end;
end;

// Insert (para Append es igual, solo cambia: Action:= daAppend)
procedure TForm1.btnInsertClick(Sender: TObject);
begin
  with Empleado do
  begin
    Action:= daInsert;
    Referencia:=  IntToStr(EditRef.Text);
    Nombre:= EditNomb.Text;
    Nacimiento:= DateToStr(EditNac.Text);
    Save;
  end;
end;

// Delete
procedure TForm1.btnDeleteClick(Sender: TObject);
begin
  Empleado.Delete;
end;

...

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Empleado.Free;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Programación orientada a objetos + Aplicacion Ejemplo pape19 Varios 4 19-06-2013 14:13:06
Programacion orientada a Objetos...duda total.... Kenobi Varios 20 30-07-2008 15:38:25
Programacion Orientada A Objetos sdiaz1983 Varios 8 16-11-2007 02:42:46
Es la Programación Orientada a Arquitectura una evolución de OOP? Roll06lm OOP 4 23-10-2007 00:33:50
Programación Orientada a Aspectos marcoszorrilla Debates 17 06-04-2004 23:18:27


La franja horaria es GMT +2. Ahora son las 20:49:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi