Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Refrescar contenido de un componente (https://www.clubdelphi.com/foros/showthread.php?t=87767)

aguml 23-02-2015 10:35:51

Refrescar contenido de un componente
 
Amigos estoy liado con un componente que lo que hace, entre otras cosas, es crear una vista previa de un diagrama. La cosa no va mal pero estoy teniendo problemas a la hora de cambiar el tamaño de la hoja y que se vea reflejado en la imagen del componente.
He probado con estas opciones:
Código PHP:

   PrnFlow1->Update();
   
PrnFlow1->Refresh();
   
PrnFlow1->Repaint(); 

Pero ninguna me muestra la imagen cambiada.
Descubrí que al hacer zoom si que se refresca correctamente así que probé esto:
Código PHP:

   PrnFlow1->PageSetup();
   
PrnFlow1->Zoom PrnFlow1->Zoom-1;
   
PrnFlow1->Zoom PrnFlow1->Zoom+1

Esto si que funciona y me aparece ya la imagen refrescada pero no creo que sea lo mas correcto y me gustaría hacerlo bien. ¿Como sería la forma correcta para hacer eso?

escafandra 23-02-2015 11:55:03

El siguiente código fuerza el repintado de una ventana:
Código PHP:

void ReDrawWindow(HWND hWnd)
{
  
TRect cr;
  ::
GetClientRect(hWnd, &cr);
  
InvalidateRect(hWnd, &crtrue);
  
SendMessage(hWndWM_NCPAINT00);
  
RedrawWindow(hWnd, &cr0RDW_FRAME|RDW_ERASE|RDW_INVALIDATE|RDW_UPDATENOW|RDW_ALLCHILDREN);


Saludos.

aguml 23-02-2015 13:30:29

eso tampoco me funciona :eek:

ecfisa 23-02-2015 13:59:05

Hola aguml.

Prueba con:
Código PHP:

  PrnFlow1->Invalidate(); 

Pero como no sabemos de que componente se trata ni que es lo que hace, es como que andamos adivinando...

Saludos :)

aguml 23-02-2015 21:18:39

invalidate ya lo prové y tampoco me resultó. El componente es el PrnFlow y no tiene soporte. A lo mejor es que hay que hacer varias cosas y como no se pues no funciona.

ecfisa 23-02-2015 21:54:14

Hola aguml.
Cita:

Empezado por aguml (Mensaje 489211)
El componente es el PrnFlow y no tiene soporte. ...

Seguimos como antes...

Luego de mucha búsqueda creo haber encontrado un enlace que hace mención al ignoto componente: AddFlow - Summary.

Si fuera el caso sería parte de la librería AddFlow de Lassalle Technologies ¿ Es correcto ?, de no ser así te ruego que nos ayudes un poco publicando algún enlace que mencione al mismo.

Saludos :)

aguml 24-02-2015 10:16:34

Correcto amigo, ese es. El caso es que la instalacion te viene con un archivo de ayuda donde te explica todo sobre el componente AddFlow pero de PrnFlow lo único que explica es esto:

Cita:

The PRNFLOW method
PrnFlow is an ActiveX control that allows printing AddFlow diagrams. It allows multipage printing, print previewing, margins, header and footer. It can be viewed as an extension of AddFlow. It is a free extension. No support is provided but its source code (written in C++/MFC) is available free of charge for the AddFlow 5 registered users. See PrnFlow for more informations.
Y si vamos adonde apunta el link vemos esto:
Cita:

What is PrnFlow?
PrnFlow is an ActiveX control allowing to print AddFlow diagrams. It allows multipage printing, print previewing, margins, header and footer. It can be viewed as an extension of AddFlow. Note that it is necessary to use AddFlow version 5.2 or higher to be able to use PrnFlow 5.0.
No support is provided for PrnFlow. However, the source code of PrnFlow (written in C++/MFC) is available free of charge for the AddFlow 5 registered users.
The following VB6 code is all you need to do to print your diagram with PrnFlow:
PrnFlow1.DocName = sFileTitle
' Prints a dotted box in each page
PrnFlow1.PageBorder = PageBorderDottedBoxDot
' The header contains the file name (placed at the left)
' and the date (placed at the right)

PrnFlow1.Header = sFileTitle & "||" & Format(Date, "dd-mmm-yyyy")
' The footer contains the page number (placed at the center)
PrnFlow1.Footer = "|- Page <PAGE> -|"
PrnFlow1.ForeColor = vbBlue
' Print the AddFlow diagram
PrnFlow1.PrintDoc

To preview an AddFlow diagram, you may use the previous code, just replacing the call to the PrintDoc method by the call to the PreviewDoc method. The diagram will be previewed in the PrnFlow control window. The user can:
  • switch pages by shift-double clicking on the preview window.
  • zoom in and out by double clicking on the preview window.

No tengo los fuentes ya que no tengo licencia porque cuesta 700€ aproximadamente y el unico inconveniente que tiene al no tener licencia es que muestra un mensajito que te dice que la aplicación fue creada con la version sin licencia y si cierras ese mensaje ya funciona con normalidad. El pero mayor de no tener licencia es no tener los fuentes del componente pero tampoco lo veo muy necesario jejeje.

ecfisa 24-02-2015 12:31:27

Hola aguml.

Por lo que pude leer en la ayuda, se trataría de un componente al modo del TQuickRep de Quick Report.

¿ En que situación deseas aplicar la actualización del diagrama ? ¿ Antes de la previsualización ?

Saludos :)

aguml 24-02-2015 13:15:34

a ver si me se explicar. Una vez se está viendo la previsualizacion, tengo un boton que permite configurar el tamaño de la pagina que usaremos para imprimirla y al salir de esa configuracion, se tiene que ver reflejado en pantalla ya que, por ejemplo, las paginas las muestro con bordes y, ademas, si se tiene la propiedad FitToPage a false, el numero de paginas cambia y, si esa propiedad está a true, tambien cambiaria el tamaño del diagrama.

ecfisa 24-02-2015 14:12:05

Hola aguml.

Ignoro si será igual en este componente, pero en Quick Report no conozco la forma de ver los cambios (como tamaño de hoja u orientación) en la previsualización.

Saludos :)

aguml 24-02-2015 19:37:14

Esta si se puede ya que con cambiar simplemente el zoom se actualiza. O sea, el truco que estoy usando ahora mismo es decrementar el zoom en 1 y luego lo incremento en 1 con lo que obtengo el previsualizado con el zoom original y ya actualizada la vista.

ecfisa 24-02-2015 20:37:57

Hola aguml.

Entonces ya lo tenes solucionado, ya que esa acción debe ser casi imperceptible ¿ No ?

Saludos :)

aguml 25-02-2015 07:58:14

si que se ve como la imagen se encoje y se estira. Por eso pregunto cual es la forma correcta de hacerlo. Lo unico que se me ocurre es correr el ejecutable en un depurador para ver que hace internamente.


La franja horaria es GMT +2. Ahora son las 19:34:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi