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...<br>
<br>Por favor si alguien me tira una pista. Aca está el fuente.<br><br>Gracias<br><br><br>unit DBComboDic;<br><br>{$mode objfpc}{$H+}<br><br>interface<br><br>uses<br>  Classes, SysUtils, LResources, Forms, Controls, Graphics,<br>
  Dialogs, DBCtrls, sqldb, StdCtrls, ibconnection;<br><br>type<br>  TDBComboDic = class(TDBComboBox)<br>  private<br>    FCDTabla:  string;<br>    FCDCampo_clave: string;<br>    FCDCampo_descr: string;<br>    FCDconn:   TIBConnection;<br>
    FCDMostrar_descr: TEdit;<br>    CDDescrip: TStringList;<br>  protected<br>    procedure Change; override;<br>    procedure UpdateData(Sender: TObject); virtual;<br>  public<br><br>  published<br>    property CDconn: TIBConnection Read FCDconn Write FCDconn;<br>
    property CDTabla: string Read FCDTabla Write FCDTabla;<br>    property CDCampo_clave: string Read FCDCampo_clave Write FCDCampo_clave;<br>    property CDCampo_descr: string Read FCDCampo_descr Write FCDCampo_descr;<br>
    property CDMostrar_descr: TEdit Read FCDMostrar_descr Write FCDMostrar_descr;<br><br>  end;<br><br><br>procedure Register;<br><br>implementation<br><br>procedure TDBComboDic.UpdateData(Sender: TObject);<br>var<br>  dst: TSQLQuery;<br>
begin<br>  inherited;<br>  dst := TSQLQuery.Create(nil);<br>  if FCDconn <> nil then<br>    dst.database := FCDconn;<br>  if CDconn <> nil then<br>    dst.database := CDconn;<br>  if dst.DataBase <> nil then<br>
  begin<br>    dst.sql.Clear;<br>    dst.sql.Text := 'select ' + CDcampo_clave + ', ' + CDcampo_descr +<br>      ' from ' + CDtabla;<br>    dst.Open;<br>    while not dst.EOF do<br>    begin<br>      items.add(dst.FieldByName(CDcampo_clave).AsString);<br>
      CDDescrip.add(dst.FieldByName(CDcampo_clave).AsString+'='+<br>                    dst.FieldByName(CDcampo_descr).AsString);<br>    end;<br>  end;<br>  dst.Free;<br>end;<br><br><br>procedure TDBComboDic.Change;<br>
begin<br>  if CDMostrar_descr <> nil then<br>    CDMostrar_descr.Text := CDDescrip.values[dst.FieldByName(CDcampo_clave).AsString];<br>end;<br><br>procedure Register;<br>begin<br>  RegisterComponents('Data Controls', [TDBComboDic]);<br>
end;<br><br>end. <br>