PDA

Ver la Versión Completa : Ejecutar procedure OnGetText "manualmente"


Walterio
04-12-2012, 20:51:17
Hola a todos...
Trabajo con Delphi 6, ADOQuery, datasetproviders y TClientDataset.
Lo que necesito hacer es lo siguiente:
Tengo algunos campos de mi clientdataset que son del tipo internalcalc a los que les asigno un procedure en su propiedad OnGetText y estos funcionan perfectamente, pero desde una procedure genérica que trata a los campos de mi clientdataset dándole un formato de ancho, si el campo es visible o no desde una grilla genérica, le asigna títulos, etc, necesito ejecutar el OnGetText asociado al campo.
Ya pude detectar que campos tienen asignado este evento :


For i := 0 to (cdsMaster.FieldCount - 1) do
begin
If (cdsMaster.Fields[i].FieldKind = fkInternalCalc) then
If Assigned(cdsMaster.FieldByName(cdsMaster.Fields[i].FieldName).OnGetText ) then
//Aqui deberia ejecutar el OnText del campo seleccionado...
//Este es un engendro horrible que intent{e desde mi ignorancia, pero, obviamente, error :
(cdsMaster.FieldByName(cdsMaster.Fields[i].FieldName).OnGetText as TProcedure).Execute ;

End;


Sugerencias, son todas bienvenidas.

Muchas gracias.

afxe
05-12-2012, 10:12:10
Prueba : cdsMaster.FieldByName(cdsMaster.Fields[i].FieldName).DisplayText, creo que este método tira del onGetText para devolver el dato almacenado en el campo.

Por cierto, no necesitas tipificarlo, puedes poner directamente: cdsMaster.Fields[i].DisplayText

Walterio
05-12-2012, 14:08:16
Muchas gracias por la sugerencia, lo pruebo y comento.

Nuevamente gracias y saludos.