Hola:
Prueba a interceptar el mensaje CM_HINTSHOW en tu componente, que se dispara cuando se necesita capturar el Hint, algo así como:
Código:
TDBEditHint = class(TDBEdit)
private
procedure CMHintShow(var Message: TMessage); message CM_HINTSHOW;
...
end;
procedure TDBEditHint.CMHintShow(var Message: TMessage);
begin
if Field <> nil then
with TCMHintShow(Message) do
if TablaBusqueda.Locate(DataField, Field.Value, [loCaseInsensitive]) then
HintInfo^.HintStr := TablaBusqueda.FieldByName('Descripcion').AsString
else HintInfo^.HintStr := 'Descripción no disponible';
inherited;
end;
Este ejemplo te sirve para inicializar el Hint, dependiendo del valor del campo en ese registro, no sé si es eso lo que pretendes, ten en cuenta que si se cambia de registro, el valor del Hint deberá cambiar también.
Cita:
Sino como hago para inicializar ciertas variables u operaciones del componente que dependan de los valores de las propiedades del mismo?
|
Si el Hint va a ser permanente, es decir que no depende del valor del registro sino de la propiedad DataField, por ejemplo, el lugar idóneo para asignarlo es en el método
Loaded que se llama una vez cargadas las propiedades desde el stream .DFM, ahí aprovechas para asignar la propiedad Hint:
Código:
TDBEditHint = class(TDBEdit)
protected
procedure Loaded; override;
...
end;
procedure TDBEditHint.Loaded;
begin
inherited Loaded;
Hint := 'Mi nombre es ' + DataField;
end;