In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

ProgressBar y labels

Foro público de Xailer en español
Responder
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

ProgressBar y labels

Mensaje por Bingen Ugaldebere »

Buenas Xailer Team.
Dado que las Progressbar que utilizamos no parecen admitir texto, he
decidido poner un label justo encima, pero éste ni se muestra ni se
actualiza, haga un refresh sleep(x) ni nada por el estilo.
Alguna idea?
Gracias.
joselalinf
Mensajes: 291
Registrado: Jue Ene 31, 2013 1:10 pm

ProgressBar y labels

Mensaje por joselalinf »

Bingen,
> Alguna idea?
Es muy difí­cil hacer lo que quieres pero se me ocurre que podrí­amos irnos
al Caribe y lo miramos allí­ con calma. ;-) Si prefieres solucinarlo desde
aquí­ mira en el ZIP a ver si te sirve.
Crea la barra en el OnInitialize() del formulario:
WITH OBJECT ::oProgress := TProgressBarEx():New( Self )
:SetBounds( ... )
:cText := "Copiando %i"
:nClrText := clBlack
:Create()
END
Si la usas en muchos sitios y prefieres una DLL, para poder crear la barra
desde el IDE en vez de a mano, no tienes más que decirlo.
Saludos,
José Lalí­n
--
Avatar de Usuario
XeviCOMAS
Mensajes: 593
Registrado: Sab Mar 12, 2011 8:16 pm

ProgressBar y labels

Mensaje por XeviCOMAS »

Bingen,
a mi tampoco me "refresca" un label (por mas que fuerze
ProcessMessages())... en un bucle repetitivo y que muestro una ProgressBar.
Lo que hago, es utilizar un TEdit con lBorder .F., lEnabled .F.,
nClrPaneDisabled clBtnFace, nClrTextDisabled clWindowText
Vaya, que utilizo un TEdit de Label... y la misma rutina SI QUE SE
REFRESCA!!!
No se en que actualización/revisión de Xailer dejó de funcionar, pero se que
hace ya un tiempo.
Un Saludo,
Xevi.
"Bingen Ugaldebere" ha escrit al missatge:510bb9a0$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Buenas Xailer Team.
Dado que las Progressbar que utilizamos no parecen admitir texto, he
decidido poner un label justo encima, pero éste ni se muestra ni se
actualiza, haga un refresh sleep(x) ni nada por el estilo.
Alguna idea?
Gracias.
Un Saludo,
Xevi.
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

ProgressBar y labels

Mensaje por Bingen Ugaldebere »

Curioso Xevi, gracias pero he optado por la solución anterior.
Salu2
El 01/02/2013 14:59, Xevi escribió:
> Bingen,
>
> a mi tampoco me "refresca" un label (por mas que fuerze
> ProcessMessages())... en un bucle repetitivo y que muestro una ProgressBar.
>
> Lo que hago, es utilizar un TEdit con lBorder .F., lEnabled .F.,
> nClrPaneDisabled clBtnFace, nClrTextDisabled clWindowText
> Vaya, que utilizo un TEdit de Label... y la misma rutina SI QUE SE
> REFRESCA!!!
>
> No se en que actualización/revisión de Xailer dejó de funcionar, pero se
> que hace ya un tiempo.
>
>
> Un Saludo,
> Xevi.
>
>
> "Bingen Ugaldebere" ha escrit al missatge:510bb9a0$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>
> Buenas Xailer Team.
>
> Dado que las Progressbar que utilizamos no parecen admitir texto, he
> decidido poner un label justo encima, pero éste ni se muestra ni se
> actualiza, haga un refresh sleep(x) ni nada por el estilo.
>
> Alguna idea?
>
> Gracias.
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

ProgressBar y labels

Mensaje por Bingen Ugaldebere »

Hola José
A lo de ir al caribe si que me apunto, allí­ se ven las cosas más claras
¿será la luz del sol que por aquí­ por el norte no abunda? :)) Aunque
tampoco se ven mal las cosas por tu tierra con un pulpo y unos
albariños. ;·)
Casi, con esto no va:
>
> WITH OBJECT ::oProgress := TProgressBarEx():New( Self )
> :SetBounds( ... )
> :cText := "Copiando %i"
> :nClrText := clBlack
> :Create()
> END
Para que funcione Hay que cambiarlo por.
WITH OBJECT ::oProgress := TProgressBarEx():New( Self )
:SetBounds( ... )
:Create()
:cText := "Copiando %i"
:nClrText := clBlack
END
Y así­ si que va correctamente.
Al final he optado por sobrecargar la clase que me parece más limpio y
espero que más correcto:
//---------------------------------------------------------- --------------------
// Sobrecarga a ProgressBar para que pueda contener un texto con un
numerador
Class TProgressBar From XProgressBar
PROPERTY cText INIT "" //Si se quiere usar un numerador
junto con un texto "Procesando registro %i"
PROPERTY nClrText INIT clWindowText EDITOR PE_Color
METHOD WMPaint()
EndClass
//---------------------------------------------------------- ----------------
METHOD WMPaint( hDC ) CLASS TProgressBar
LOCAL cText
hDC := ::BeginPaint( hDC )
PrevWindowProc( ::Handle, WM_PAINT, hDC, 0 )
IF !Empty( ::cText )
cText := StrTran( ::cText, "%i", AllTrim( ToString( ::nValue ) ) )
SetBkMode( hDC, TRANSPARENT )
SetTextColor( hDC, ::nClrText )
DrawText( hDC, cText, GetClientRect( ::Handle ), nOR( DT_CENTER,
DT_VCENTER, DT_SINGLELINE ) )
ENDIF
Super:WmPaint()
RETURN ::EndPaint( hDC )
//---------------------------------------------------------- ----------------
Gracias y saludos.
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

ProgressBar y labels

Mensaje por Bingen Ugaldebere »

Un último cambio por si se quiere usar un í­ndice y un total junto con un
texto "Procesando registro %1 de %2"
//---------------------------------------------------------- --------------------
// Sobrecarga a ProgressBar para que pueda contener un texto y
opcionalmente un indice de progreso y un total
Class TProgressBar From XProgressBar
PROPERTY cText INIT "" //Si se quiere usar un numerador
junto con un texto "Procesando registro %1 de %2"
PROPERTY nClrText INIT clWindowText EDITOR PE_Color
METHOD WMPaint()
EndClass
//---------------------------------------------------------- ----------------
METHOD WMPaint( hDC ) CLASS TProgressBar
LOCAL cText
hDC := ::BeginPaint( hDC )
PrevWindowProc( ::Handle, WM_PAINT, hDC, 0 )
IF !Empty( ::cText )
cText := StrTran( ::cText, "%1", AllTrim( ToString( ::nValue ) ) )
cText := StrTran( cText, "%2", AllTrim( ToString( ::nMax ) ) )
SetBkMode( hDC, TRANSPARENT )
SetTextColor( hDC, ::nClrText )
DrawText( hDC, cText, GetClientRect( ::Handle ), nOR( DT_CENTER,
DT_VCENTER, DT_SINGLELINE ) )
ENDIF
Super:WmPaint()
RETURN ::EndPaint( hDC )
//---------------------------------------------------------- ----------------
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

ProgressBar y labels

Mensaje por zeasoftware »

o igual lo sobrecargue sobre TProgressBar, pero no me funciona...
Hace rato que buscaba igual como poner el numero de % de avance...
Saludos
Ramón Zea
Móvil.: 993-231.62.29
Tel./Fax: 993-353-46-73
www.zeasoftware.com.mx
soporte@zeasoftware.com.mx
zeasoftware@hotmail.com
Aliado FACTURAXION
"Bingen Ugaldebere" escribió en el mensaje de
noticias:[email=510f9759@svctag-j7w3v3j....]510f9759@svctag-j7w3v3j....[/email]
Un último cambio por si se quiere usar un í­ndice y un total junto con un
texto "Procesando registro %1 de %2"
//---------------------------------------------------------- --------------------
// Sobrecarga a ProgressBar para que pueda contener un texto y
opcionalmente un indice de progreso y un total
Class TProgressBar From XProgressBar
PROPERTY cText INIT "" //Si se quiere usar un numerador
junto con un texto "Procesando registro %1 de %2"
PROPERTY nClrText INIT clWindowText EDITOR PE_Color
METHOD WMPaint()
EndClass
//---------------------------------------------------------- ----------------
METHOD WMPaint( hDC ) CLASS TProgressBar
LOCAL cText
hDC := ::BeginPaint( hDC )
PrevWindowProc( ::Handle, WM_PAINT, hDC, 0 )
IF !Empty( ::cText )
cText := StrTran( ::cText, "%1", AllTrim( ToString( ::nValue ) ) )
cText := StrTran( cText, "%2", AllTrim( ToString( ::nMax ) ) )
SetBkMode( hDC, TRANSPARENT )
SetTextColor( hDC, ::nClrText )
DrawText( hDC, cText, GetClientRect( ::Handle ), nOR( DT_CENTER,
DT_VCENTER, DT_SINGLELINE ) )
ENDIF
Super:WmPaint()
RETURN ::EndPaint( hDC )
//---------------------------------------------------------- ----------------
Martin Del Angel
Mensajes: 360
Registrado: Mié Dic 03, 2008 5:05 am

ProgressBar y labels

Mensaje por Martin Del Angel »

On 2/1/2013 7:59 AM, Xevi wrote:
> Bingen,
>
> a mi tampoco me "refresca" un label (por mas que fuerze
> ProcessMessages())... en un bucle repetitivo y que muestro una ProgressBar.
>
> Lo que hago, es utilizar un TEdit con lBorder .F., lEnabled .F.,
> nClrPaneDisabled clBtnFace, nClrTextDisabled clWindowText
> Vaya, que utilizo un TEdit de Label... y la misma rutina SI QUE SE
> REFRESCA!!!
>
> No se en que actualización/revisión de Xailer dejó de funcionar, pero se
> que hace ya un tiempo.
>
>
> Un Saludo,
> Xevi.
>
>
> "Bingen Ugaldebere" ha escrit al missatge:510bb9a0$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>
> Buenas Xailer Team.
>
> Dado que las Progressbar que utilizamos no parecen admitir texto, he
> decidido poner un label justo encima, pero éste ni se muestra ni se
> actualiza, haga un refresh sleep(x) ni nada por el estilo.
>
> Alguna idea?
>
> Gracias.
Xevi:
Puedes mostrar la fracción de código de programa donde muestras el Label !
A mi siempre me ha refrescado el Label en todas las versiones de Xailer.
Quizas estamos hablando de cosas diferentes
Saludos...
Avatar de Usuario
XeviCOMAS
Mensajes: 593
Registrado: Sab Mar 12, 2011 8:16 pm

ProgressBar y labels

Mensaje por XeviCOMAS »

Martin,
::oLabel1:lVisible := ::oLabel2:lVisible := ::oLblContador:lVisible :=
::oCkboxlProces1a1:lChecked
::oProgressBar1:nValue := 0
While .T.
::oBtnCancelar:SetFocus()
If ::lCancelar
Exit
EndIf
ProcessMessages()
cLectura := FReadStr( nHandle, nLenData )
If cLectura = Chr(26) .or. Empty( cLectura )
::oLblReferencia:cText := cRefe
Exit
EndIf
*LOGDEBUG(CLECTURA)
::oProgressBar1:nValue ++
::oLblContador:cText := Transform( ::oProgressBar1:nValue, "@E
999,999" )
If (AppData:lCitroen .and. Asc( Right( cLectura, 1 ) ) # 10) .or.;
(!AppData:lCitroen .and. (::oProgressBar1:nValue <
::oProgressBar1:nMax .and. Asc( Right( cLectura, 1 ) ) # 10))
xMsgDlg( ::aIdioma[19,AppData:nIdioma],
::aIdioma[16,AppData:nIdioma], mbOK,, IDI_ERROR )
Exit
EndIf
cRefe := ""
cRemp := ""
If AppData:lCitroen
For n:=2 to 14
If SubStr( cLectura, n, 1 ) # " "
cRefe += SubStr( cLectura, n, 1 )
EndIf
Next
cRefe := PadR( cRefe, 13 )
If ::oCkboxlProces1a1:lChecked //::oProgressBar1:nValue % 50 == 0
::oLblReferencia:cText := cRefe
EndIf
....
Un Saludo,
Xevi.
"Martin Del Angel" ha escrit al missatge:51100a67$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
On 2/1/2013 7:59 AM, Xevi wrote:
> Bingen,
>
> a mi tampoco me "refresca" un label (por mas que fuerze
> ProcessMessages())... en un bucle repetitivo y que muestro una
> ProgressBar.
>
> Lo que hago, es utilizar un TEdit con lBorder .F., lEnabled .F.,
> nClrPaneDisabled clBtnFace, nClrTextDisabled clWindowText
> Vaya, que utilizo un TEdit de Label... y la misma rutina SI QUE SE
> REFRESCA!!!
>
> No se en que actualización/revisión de Xailer dejó de funcionar, pero se
> que hace ya un tiempo.
>
>
> Un Saludo,
> Xevi.
>
>
> "Bingen Ugaldebere" ha escrit al missatge:510bb9a0$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>
> Buenas Xailer Team.
>
> Dado que las Progressbar que utilizamos no parecen admitir texto, he
> decidido poner un label justo encima, pero éste ni se muestra ni se
> actualiza, haga un refresh sleep(x) ni nada por el estilo.
>
> Alguna idea?
>
> Gracias.
Xevi:
Puedes mostrar la fracción de código de programa donde muestras el Label !
A mi siempre me ha refrescado el Label en todas las versiones de Xailer.
Quizas estamos hablando de cosas diferentes
Saludos...
Un Saludo,
Xevi.
Martin Del Angel
Mensajes: 360
Registrado: Mié Dic 03, 2008 5:05 am

ProgressBar y labels

Mensaje por Martin Del Angel »

On 2/4/2013 2:29 PM, Xevi wrote:
> Martin,
>
>
> ::oLabel1:lVisible := ::oLabel2:lVisible := ::oLblContador:lVisible
> := ::oCkboxlProces1a1:lChecked
> ::oProgressBar1:nValue := 0
> While .T.
> ::oBtnCancelar:SetFocus()
> If ::lCancelar
> Exit
> EndIf
> ProcessMessages()
>
> cLectura := FReadStr( nHandle, nLenData )
> If cLectura = Chr(26) .or. Empty( cLectura )
> ::oLblReferencia:cText := cRefe
> Exit
> EndIf
> *LOGDEBUG(CLECTURA)
> ::oProgressBar1:nValue ++
> ::oLblContador:cText := Transform( ::oProgressBar1:nValue, "@E
> 999,999" )
> If (AppData:lCitroen .and. Asc( Right( cLectura, 1 ) ) # 10) .or.;
> (!AppData:lCitroen .and. (::oProgressBar1:nValue <
> ::oProgressBar1:nMax .and. Asc( Right( cLectura, 1 ) ) # 10))
> xMsgDlg( ::aIdioma[19,AppData:nIdioma],
> ::aIdioma[16,AppData:nIdioma], mbOK,, IDI_ERROR )
> Exit
> EndIf
>
> cRefe := ""
> cRemp := ""
> If AppData:lCitroen
> For n:=2 to 14
> If SubStr( cLectura, n, 1 ) # " "
> cRefe += SubStr( cLectura, n, 1 )
> EndIf
> Next
> cRefe := PadR( cRefe, 13 )
>
> If ::oCkboxlProces1a1:lChecked //::oProgressBar1:nValue % 50 == 0
> ::oLblReferencia:cText := cRefe
> EndIf
> ...
>
>
> Un Saludo,
> Xevi.
>
>
>
> "Martin Del Angel" ha escrit al missatge:51100a67$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>
> On 2/1/2013 7:59 AM, Xevi wrote:
>> Bingen,
>>
>> a mi tampoco me "refresca" un label (por mas que fuerze
>> ProcessMessages())... en un bucle repetitivo y que muestro una
>> ProgressBar.
>>
>> Lo que hago, es utilizar un TEdit con lBorder .F., lEnabled .F.,
>> nClrPaneDisabled clBtnFace, nClrTextDisabled clWindowText
>> Vaya, que utilizo un TEdit de Label... y la misma rutina SI QUE SE
>> REFRESCA!!!
>>
>> No se en que actualización/revisión de Xailer dejó de funcionar, pero se
>> que hace ya un tiempo.
>>
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> "Bingen Ugaldebere" ha escrit al missatge:510bb9a0$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>
>> Buenas Xailer Team.
>>
>> Dado que las Progressbar que utilizamos no parecen admitir texto, he
>> decidido poner un label justo encima, pero éste ni se muestra ni se
>> actualiza, haga un refresh sleep(x) ni nada por el estilo.
>>
>> Alguna idea?
>>
>> Gracias.
>
> Xevi:
>
> Puedes mostrar la fracción de código de programa donde muestras el Label !
>
> A mi siempre me ha refrescado el Label en todas las versiones de Xailer.
>
> Quizas estamos hablando de cosas diferentes
>
>
> Saludos...
Xevi:
Agrega estas 2 lineas despues de
::oLblContador:cText := Transform( ::oProgressBar1:nValue, "@E 999,999" )
::oLblContador:Adjust()
::oLblContador:Update()
con eso debe de funcionar
Saludos...
Avatar de Usuario
XeviCOMAS
Mensajes: 593
Registrado: Sab Mar 12, 2011 8:16 pm

ProgressBar y labels

Mensaje por XeviCOMAS »

Martin,
Funcionó!!!
Gracias.
Un Saludo,
Xevi.
"Martin Del Angel" ha escrit al missatge:51102415$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
On 2/4/2013 2:29 PM, Xevi wrote:
> Martin,
>
>
> ::oLabel1:lVisible := ::oLabel2:lVisible := ::oLblContador:lVisible
> := ::oCkboxlProces1a1:lChecked
> ::oProgressBar1:nValue := 0
> While .T.
> ::oBtnCancelar:SetFocus()
> If ::lCancelar
> Exit
> EndIf
> ProcessMessages()
>
> cLectura := FReadStr( nHandle, nLenData )
> If cLectura = Chr(26) .or. Empty( cLectura )
> ::oLblReferencia:cText := cRefe
> Exit
> EndIf
> *LOGDEBUG(CLECTURA)
> ::oProgressBar1:nValue ++
> ::oLblContador:cText := Transform( ::oProgressBar1:nValue, "@E
> 999,999" )
> If (AppData:lCitroen .and. Asc( Right( cLectura, 1 ) ) # 10)
> .or.;
> (!AppData:lCitroen .and. (::oProgressBar1:nValue <
> ::oProgressBar1:nMax .and. Asc( Right( cLectura, 1 ) ) # 10))
> xMsgDlg( ::aIdioma[19,AppData:nIdioma],
> ::aIdioma[16,AppData:nIdioma], mbOK,, IDI_ERROR )
> Exit
> EndIf
>
> cRefe := ""
> cRemp := ""
> If AppData:lCitroen
> For n:=2 to 14
> If SubStr( cLectura, n, 1 ) # " "
> cRefe += SubStr( cLectura, n, 1 )
> EndIf
> Next
> cRefe := PadR( cRefe, 13 )
>
> If ::oCkboxlProces1a1:lChecked //::oProgressBar1:nValue % 50 == 0
> ::oLblReferencia:cText := cRefe
> EndIf
> ...
>
>
> Un Saludo,
> Xevi.
>
>
>
> "Martin Del Angel" ha escrit al missatge:51100a67$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>
> On 2/1/2013 7:59 AM, Xevi wrote:
>> Bingen,
>>
>> a mi tampoco me "refresca" un label (por mas que fuerze
>> ProcessMessages())... en un bucle repetitivo y que muestro una
>> ProgressBar.
>>
>> Lo que hago, es utilizar un TEdit con lBorder .F., lEnabled .F.,
>> nClrPaneDisabled clBtnFace, nClrTextDisabled clWindowText
>> Vaya, que utilizo un TEdit de Label... y la misma rutina SI QUE SE
>> REFRESCA!!!
>>
>> No se en que actualización/revisión de Xailer dejó de funcionar, pero se
>> que hace ya un tiempo.
>>
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> "Bingen Ugaldebere" ha escrit al missatge:510bb9a0$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
>>
>> Buenas Xailer Team.
>>
>> Dado que las Progressbar que utilizamos no parecen admitir texto, he
>> decidido poner un label justo encima, pero éste ni se muestra ni se
>> actualiza, haga un refresh sleep(x) ni nada por el estilo.
>>
>> Alguna idea?
>>
>> Gracias.
>
> Xevi:
>
> Puedes mostrar la fracción de código de programa donde muestras el Label !
>
> A mi siempre me ha refrescado el Label en todas las versiones de Xailer.
>
> Quizas estamos hablando de cosas diferentes
>
>
> Saludos...
Xevi:
Agrega estas 2 lineas despues de
::oLblContador:cText := Transform( ::oProgressBar1:nValue, "@E 999,999" )
::oLblContador:Adjust()
::oLblContador:Update()
con eso debe de funcionar
Saludos...
Un Saludo,
Xevi.
Responder