Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 13-07-2003
mosorio mosorio is offline
Miembro
 
Registrado: may 2003
Posts: 159
Poder: 24
mosorio Va por buen camino
Angry

Hola compañeros,
Tengo un inconveniente con el componente que estoy desarrollando, el principal funciona bien sib problemas depués de haberlo testeado varias veces, el inconveniente lo tengo con el derivado para acceso a datos y es los iguiente, segun lo que aparece en el curso de creación de componenstes de revuelta..
lo que hay que hacer es colocar unos metodos para que funcione lo mínimo, pero a my no me va, el código de lo que he hecho es el siguiente:

Cita:
unit DBNumFormat;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, StdCtrls, NumFormat,
DB, DBCtrls;

type
TDBNumFormat = class(TNumFormat)
private
FDataLink : TFieldDataLink;
FReadOnly : Boolean;
function GetDataField: String;
procedure SetDataField(const Value : String);
function GetDataSource: TDataSource;
procedure SetDataSource(Value : TDataSource);
function GetReadOnly: Boolean;
procedure SetReadOnly(Value: Boolean);
procedure EditingChange(Sender: TObject);
protected
procedure UpdateData(Sender: TObject);
procedure DataChange(Sender : TObject);
procedure Notification(AComponent : TComponent; Operation : TOperation); override;
procedure CMExit(var Message: TWMNoParams); message CM_EXIT;
procedure Change;
public
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
published
property DataField: string read GetDataField write SetDataField;
property DataSource: TDataSource read GetDataSource write SetDataSource;
property ReadOnly: Boolean read GetReadOnly write SetReadOnly default False;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Argades-[DA]', [TDBNumFormat]);
end;

{ TDBNumFormat }

function TDBNumFormat.GetDataField: String;
begin
Result := FDataLink.FieldName;
end;

procedure TDBNumFormat.SetDataField(const Value: String);
begin
FDataLink.FieldName := Value;
end;

function TDBNumFormat.GetDataSource: TDataSource;
begin
Result := FDataLink.DataSource;
end;

procedure TDBNumFormat.SetDataSource(Value: TDataSource);
begin
if FDataLink.DataSource <> Value then
begin
FDataLink.DataSource := Value;
if Value <> Nil then
Value.FreeNotification(Self);
end;
end;

function TDBNumFormat.GetReadOnly: Boolean;
begin
Result := FDataLink.ReadOnly;
end;

procedure TDBNumFormat.SetReadOnly(Value: Boolean);
begin
FDataLink.ReadOnly := Value;
end;

procedure TDBNumFormat.Notification(AComponent: TComponent;
Operation: TOperation);
begin
Inherited Notification(AComponent, Operation);
if (Operation = opRemove) And (FDataLink <> Nil) And
(AComponent = DataSource) then
DataSource := Nil;
end;

constructor TDBNumFormat.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := ControlStyle - [csReplicatable];
FReadOnly := False;
FDataLink := TFieldDataLink.Create;
FDataLink.OnDataChange := DataChange;
FDataLink.OnUpdateData := UpdateData;
FDataLink.OnEditingChange := EditingChange;
FDataLink.Control := Self;
end;

destructor TDBNumFormat.Destroy;
begin
FDataLink.Free;
FDataLink := Nil;
inherited Destroy;
end;

procedure TDBNumFormat.DataChange(Sender: TObject);
begin
if FDataLink.Field <> Nil then
Text := FDataLink.Field.Text
else
Text := Name
end;

procedure TDBNumFormat.UpdateData(Sender: TObject);
begin
FDataLink.Field.Text := Text;
end;

procedure TDBNumFormat.EditingChange(Sender: TObject);
begin
FReadOnly := Not FDataLink.Editing;
end;

procedure TDBNumFormat.CMExit(var Message: TWMNoParams);
begin
try
FDataLink.UpdateRecord;
except
SetFocus;
raise;
end;
inherited;
end;

procedure TDBNumFormat.Change;
begin
inherited Changed;
FDataLink.Modified;
end;

end.
Obviamente que haciendo las respecitas declaraciones donde se indica, el problema es que NO me refleja el cambio en el campo de la tabla, que sucede, no lo se, espero alguien me ayude a solucionarlo, tengo el proyecto bloqueado a falta del componente.
El componente original lo que hace es escribir el número comenzando por los decimales como en una caja registradora, sin necesidad de escibir el decimal ni los separadores de miles, esto se asigna en las propiedades, pero el de acceso a datos no me funciona como ya he dicho.

Espero su ayuda de antemano.
El link de la información es: http://personal.redestb.es/revueltaroche/ccu12.htm
http://www.marteens.com/trick29.htm
Responder Con Cita
 



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


La franja horaria es GMT +2. Ahora son las 09:51:22.


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