[Lazarus-es] Componente visual

Horacio Jamilis hjamilis en pymesoft.com.ar
Vie Nov 20 17:00:56 CET 2009


Prueba poner en la parte pública de la clase el metodo:

procedure Loaded; override;

y en su implementación, poner el código de "inicialización".
Este método se llamará después que todas las propiedades del formulario 
(o módulo de datos) hayan sido cargadas, y te permitirá, en tiempo de 
ejecución, completar la inicialización de tu componente.

Espero que te sirva,

Suerte

Horacio

Héctor S. Ponce escribió:
> Hola, Es la primera vez que intento hacer un componente visual 
> heredando de un TDBCombobox... el componente se compila, se instala, 
> lo uso, pero no logro hacer que el mismo se cargue inicialmente... ya 
> he probado hacer override de varios procedures (create, UpdateData, 
> etc) sigue sin funcionar...
>
> Por favor si alguien me tira una pista. Aca está el fuente.
>
> Gracias
>
>
> unit DBComboDic;
>
> {$mode objfpc}{$H+}
>
> interface
>
> uses
>   Classes, SysUtils, LResources, Forms, Controls, Graphics,
>   Dialogs, DBCtrls, sqldb, StdCtrls, ibconnection;
>
> type
>   TDBComboDic = class(TDBComboBox)
>   private
>     FCDTabla:  string;
>     FCDCampo_clave: string;
>     FCDCampo_descr: string;
>     FCDconn:   TIBConnection;
>     FCDMostrar_descr: TEdit;
>     CDDescrip: TStringList;
>   protected
>     procedure Change; override;
>     procedure UpdateData(Sender: TObject); virtual;
>   public
>
>   published
>     property CDconn: TIBConnection Read FCDconn Write FCDconn;
>     property CDTabla: string Read FCDTabla Write FCDTabla;
>     property CDCampo_clave: string Read FCDCampo_clave Write 
> FCDCampo_clave;
>     property CDCampo_descr: string Read FCDCampo_descr Write 
> FCDCampo_descr;
>     property CDMostrar_descr: TEdit Read FCDMostrar_descr Write 
> FCDMostrar_descr;
>
>   end;
>
>
> procedure Register;
>
> implementation
>
> procedure TDBComboDic.UpdateData(Sender: TObject);
> var
>   dst: TSQLQuery;
> begin
>   inherited;
>   dst := TSQLQuery.Create(nil);
>   if FCDconn <> nil then
>     dst.database := FCDconn;
>   if CDconn <> nil then
>     dst.database := CDconn;
>   if dst.DataBase <> nil then
>   begin
>     dst.sql.Clear;
>     dst.sql.Text := 'select ' + CDcampo_clave + ', ' + CDcampo_descr +
>       ' from ' + CDtabla;
>     dst.Open;
>     while not dst.EOF do
>     begin
>       items.add(dst.FieldByName(CDcampo_clave).AsString);
>       CDDescrip.add(dst.FieldByName(CDcampo_clave).AsString+'='+
>                     dst.FieldByName(CDcampo_descr).AsString);
>     end;
>   end;
>   dst.Free;
> end;
>
>
> procedure TDBComboDic.Change;
> begin
>   if CDMostrar_descr <> nil then
>     CDMostrar_descr.Text := 
> CDDescrip.values[dst.FieldByName(CDcampo_clave).AsString];
> end;
>
> procedure Register;
> begin
>   RegisterComponents('Data Controls', [TDBComboDic]);
> end;
>
> end.
> ------------------------------------------------------------------------
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>   





More information about the Lazarus-es mailing list