Luego con tranquilidad pensé que podía ser eso...
En mi caso lo hago así (te orto un trozo de programa para que veas el funcionamiento):
Código Delphi
[-]
...
const
RUNBROWSE_METHOD = 'RunBrowse';
var
_FormBrowse:TForm;
_FormBrowseClass:TFormClass;
Routine: TMethod;
begin
_FormBrowseClass := YTrazProc.FormBrowseClass;
_FormBrowse := _FormBrowseClass.Create(Self);
try
Routine.Data := Pointer((_FormBrowse as _FormBrowseClass));
Routine.Code := (_FormBrowse as _FormBrowseClass).MethodAddress(RUNBROWSE_METHOD);
finally
FreeAndNil(_FormBrowse);
end;
if (Routine.Code = nil) then begin
Exit;
end;
i := TExecuteRunBrowse(Routine)(_FormBrowseClass,
[ATTR_TYTRAZA],
[Traza],
[tsEqual],
[False],
['FechaHora']);
FFormBrowseTraz := YTrazProc.FormBrowse;
end;
end;
He quitado algun trozo que sobra, pero las operaciones básicas están.
El tipo del procedimietno está definido con todos los parámetros:
Código Delphi
[-]
TExecuteRunBrowse = function (FormBrowseClass: TFormClass;
AttrName : Array of string;
AttrValue : Array of Variant;
Operator : Array of TSQLOperator;
IsNot : Array of Boolean;
...): Integer of object;