Ver Mensaje Individual
  #7  
Antiguo 23-02-2007
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Reputación: 22
DarKraZY Va por buen camino
Hola waly2k1

La verdad es que utilizo Firebird 1.5. Y este es un poco del código del componente para que te hagas una idea:

Código Delphi [-]
  {...}
  published
    property Caption: string read FCaption write SetCaption;
    property CharCase: TEditCharCase read FCharCase write SetCharCase default ecUpperCase;
    property FormColor: TColor read FFormColor write FFormColor default clBtnFace;
    property IBDatabase: TIBDatabase read FIBDatabase write SetIBDatabase;
    property IBTransaction: TIBTransaction read FIBTransaction write SetIBTransaction;
    property ProcedureName: string read FProcedureName write SetProcedureName;
  end;

Como puedes ver ProcedureName es un string pero tengo definida la propiedad de la siguiente manera
Código Delphi [-]
  TStoredProcedureProperty = class(TStringProperty)
  public
    function GetAttributes: TPropertyAttributes; override;
    procedure GetValues(Proc: TGetStrProc); override;
  end;

{...}

procedure Register;
begin
  RegisterComponents('TabComponente', [TFormSeleccion]);
  RegisterPropertyEditor(TypeInfo(string), TFormSeleccion, 'ProcedureName', TStoredProcedureProperty); {do not localize}
end;

function TStoredProcedureProperty.GetAttributes: TPropertyAttributes;
begin
  Result := [paValueList, paSortList];
end;

procedure TStoredProcedureProperty.GetValues(Proc: TGetStrProc);
var
  StoredProc: TIBStoredProc;
  i: Integer;
  NamesList: TStrings;
begin
  StoredProc := TIBStoredProc.Create(nil);
  try
    StoredProc.Database := (GetComponent(0) as TFormSeleccion).IBDatabase;
    StoredProc.Transaction := (GetComponent(0) as TFormSeleccion).IBTransaction;
    NamesList := StoredProc.StoredProcedureNames;
    for I := 0 to NamesList.Count - 1 do
      Proc(NamesList[i]);
  finally
    StoredProc.Free;
  end;
end;

De esta forma en mi componente aparece una lista desplegable con los procedimientos almacenados.

Por cierto, en tu ejemplo no he visto nada de DBGridColumns dinámicas. Porque me gustaría que estuviesen todas las propiedades de una TColumn.

Última edición por DarKraZY fecha: 23-02-2007 a las 11:12:46.
Responder Con Cita