PDA

Ver la Versión Completa : Cambiar Left de frxMemoView en tiempo de Ejecucion


Neeruu
25-10-2018, 15:58:34
Hola a todos.

Necesito que me ayuden...

Tengo una MasterData, enlazada a datos.

Dentro de la banda tengo 2 campos, un frxPictureView y un frxMemoView.. hasta acá no hay ningún problema.

El tema es que la imagen que se carga es de ancho variable y necesito que el frxMemoView se acomode al lado de la imagen...
O sea el frxMemoView cambia el left por cada renglón que se imprime y esto es lo que no se hacer...

Como puedo cambiar el left del frxMemoView por cada renglón que se imprima teniendo en cuenta el width de frxPictureView?

Saludos.

gatosoft
26-10-2018, 17:20:12
Puedes utilizar desde delphi la función FindObject del reporte para obtener una instancia del memo o de la imagen y desde Delphi ajustar las propiedades

El sigueinte codigo asigna texto a un memo cuyo nombre se pasa como parametro... igual puedes ajustardesde aqui el left.

Uses frxClass;

Procedure TForm1.AsignarValorMemo(pMemoName, pMemoValue: String);
var
t: TfrxMemoView;
Begin
t := TfrxMemoView(frxReport1.FindObject(pMemoName));
if t <> nil then
t.Memo.Text := pMemoValue;
end;

Para hacer el ajuste, debes programar el evento OnBeforePrint de la banda que contiene lso componentes y hacer un llamado a una funcion externa (por ejemplo: AjustarTamanios)



//esto es en fastreports
procedure Header1OnBeforePrint(Sender: TfrxComponent);
begin
AjustarTamanios();
end;

vuelves a Delphi y asignas la función externa al componente

procedure TForm1.Create(Sender: TObject);
begin
frxReport1.AddFunction('function AjustarTamanios(): Boolean;');
end;

El componnte de fastreports TfrxReport, tiene un evento llamado OnUserFunction y allí verificas si la función fue llamada y haces los ajustes que consideres

function TForm1.frxReport1UserFunction(const MethodName: string;
var Params: Variant): Variant;
begin
if CompareText(MethodName, AjustarTamanios) = 0 then
begin
//aqui tu codigo para ajustar tamaños
end;
end;