[Lazarus-es] Componente visual

Héctor S. Ponce hectorsponce en gmail.com
Vie Nov 20 13:09:21 CET 2009


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.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20091120/0a1a4514/attachment-0002.html>


More information about the Lazarus-es mailing list