FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Parpadeo de un SAY
Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Parpadeo de un SAY
Posted: Sat Mar 02, 2024 04:23 PM

Buenas tardes.

se puede lograr el parpadeo de un SAY?

si se puede. Como hacerlo?

Gracias

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Parpadeo de un SAY
Posted: Sat Mar 02, 2024 04:42 PM
si, se puede con SSAY.PRG y SSAY.CH

Download:

https://mega.nz/file/5QVUzRSS#CxqVYgUT9UVGs-YR0faToNmZYZkFekbZT5keQMGoccg

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Parpadeo de un SAY
Posted: Sat Mar 02, 2024 04:50 PM
Y también DSAY.PRG y DSAY.CH

Download:

https://mega.nz/file/kNcBTKjA#ViF4H4zNNbGcS5PQjQVR0KqJ08AZlBfrFsRPhdMTedY

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Re: Parpadeo de un SAY
Posted: Sat Mar 02, 2024 04:57 PM

Gracias Joao por tu tiempo.

No es lo que busco.

Necesito que al cargar un dato en un GET ( por ejemplo codigo de cliente ) se me muestre el NOMBRE del mismo en un SAY y este quede parpadeando o titilando.

Se puede?

Gracias

Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Parpadeo de un SAY
Posted: Sat Mar 02, 2024 05:11 PM
José, mira se ayuda:

https://forums.fivetechsupport.com/viewtopic.php?f=3&t=43239

Ó haga un DEMO y yo modifico para ti.

Gracias.

Regards, saludos
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Re: Parpadeo de un SAY
Posted: Sat Mar 02, 2024 05:49 PM
José,

Te doy una idea, si te sirve así, puedes adaptarla a tu caso.
Yo lo hago simulando el parpadeo mostrando/ocultando el SAY con el uso de un timer
Code (fw): Select all Collapse
Define Dialog oDlg_EditarPromotores resource "oDlg_NewPromotor" title 'Actualizar cambios en este Promotor' 
  oDlg_EditarPromotores:lHelpIcon:=.f.
  oDlg_EditarPromotores:SetFont(_oFontDlgs)

  Redefine say oSay1 id 4016 of oDlg_EditarPromotores
  oSay1:SetColor( nSayTextColor, nSayBackColor )
  oSay1:SetText('Editando...')
  oSay1:SetFont(oFontSayEdit)
  oSay1:lTransparent:=.t.

  define timer oTimer interval 3800 action Fnct_Blinker()
  ...
  ...

Activate Dialog ..

***************************************************************
Static Function Fnct_Blinker()

    nCountBlink++

    if (nCountBlink/2) <> int(nCountBlink/2)
        oSay1:Hide()
     else
        oSay1:Show()
    endif

    oSay1:Refresh()

return .t.

**************************************************************
Esta linea:
Code (fw): Select all Collapse
if (nCountBlink/2) <> int(nCountBlink/2)
me indica si el contador es par o impar, dependiendo de eso, oculta o muestra.

y aumentado o disminuyendo el valor en el timer, le das la velocidad de parpadero que deseas:
Code (fw): Select all Collapse
define timer oTimer interval 3800 action Fnct_Blinker()
espero te sirva.
"Los errores en programación, siempre están entre la silla y el teclado..."



Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin



Carora, Estado Lara, Venezuela.
Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Re: Parpadeo de un SAY
Posted: Sat Mar 02, 2024 06:54 PM

Joao y José: Gracias por molestarse!!!

Algo debo esta haciendo mal ( muy Mal )

No logro hacerlo funcionar.

mi fuente es asi:

.....

REDEFINE GET oRamo VAR nRamo PICTURE "99" ID Ma_Ramo OF oDlgMa valid veoramo(@nRamo,@cVeoRamo) .and. (oRamo:Refresh(),oVeoRamo:Refresh(),.t.)

REDEFINE SAY oVeoRamo VAR cVeoRamo PICTURE "@K!" ID Ma_VeoRamo OF oDlgMa

donde la funcion VeoRamo me devuelve 2 valores, 1 codigo y un detalle.. este detalle es el que quiero hacer parpadear.

he probado asi lo de JOAO

REDEFINE GET oRamo VAR nRamo PICTURE "99" ID Ma_Ramo OF oDlgMa valid veoramo(@nRamo,@cVeoRamo) .and. (oRamo:Refresh(),oVeoRamo:Refresh(),.t.)

REDEFINE DYNAMIC SAY VAR cVeoRamo ID Ma_VeoRamo OF oDlgMa;

         HORIZONTAL SCROLL WRAP;

         RIGHT SHADED;

         COLOR CLR_WHITE, CLR_BLUE //FONT oFont

y no hay caso, incluso intente pasar el parametro objeto del say y me da error en la palabra DYNAMIC

y he probado asi con la sugerencia de José

REDEFINE GET oRamo VAR nRamo PICTURE "99" ID Ma_Ramo OF oDlgMa valid veoramo(@nRamo,@cVeoRamo) .and. (oRamo:Refresh(),oVeoRamo:Refresh(),.t.)

REDEFINE SAY oVeoRamo VAR cVeoRamo PICTURE "@K!" ID Ma_VeoRamo OF oDlgMa

DEFINE TIMER oTmr INTERVAL 50 ACTION (Fnct_Blinker(@oVeoRamo),oVeoRamo:Refresh())

pasando el objeto porque no es publico sin tocar la funcion Fnct_Blinker

y tampoco logro el parpadeo, es mas no me realiza ningun cambio.

Esta es muy parecida a una propuesta de WILLIY que tampoco logro hacer funcionar

lo dicho. algo estoy haciendo mal, muy mal.

gracias igual por su tiempo

Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Re: Parpadeo de un SAY
Posted: Sat Mar 02, 2024 07:29 PM
Si pasas el codigo completo, creo que seria mas facil ayudarte.
Por lo pronto, comenta esta parte
Code (fw): Select all Collapse
.and. (oRamo:Refresh(),oVeoRamo:Refresh(),.t.)


no le veo el sentido, creo que eso hace que no se ejecute el valid,

ponla asi:
Code (fw): Select all Collapse
 valid veoramo(@nRamo,@cVeoRamo) //.and. (oRamo:Refresh(),oVeoRamo:Refresh(),.t.)


y quitale esto a la llamanda del timer
Code (fw): Select all Collapse
,oVeoRamo:Refresh()
y si estas pasando el objeto como parametro a la funcion blinker,
Code (fw): Select all Collapse
Fnct_Blinker(@oVeoRamo)
recuerda colocarla en la funcion, y sin el @, es decir:
Code (fw): Select all Collapse
Function Fnct_Blinker(oVeoRamo)
prueba asi y nos comentas.
"Los errores en programación, siempre están entre la silla y el teclado..."



Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin



Carora, Estado Lara, Venezuela.
Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Re: Parpadeo de un SAY
Posted: Sat Mar 02, 2024 10:30 PM

Estimado José.

Si saco los refresh() ( que lo hice ) no me actualiza ni el get ni el detalle

la variable se pasa con @ pero se recibe sin ella.

Todo lo sugerido lo intente y no va.

asi me quedo el codigo en discordia

Function Materiales()

local ......

DEFINE DIALOG oDlgMa RESOURCE "Material"

DEFINE TIMER oTmr INTERVAL 50 ACTION (Fnct_Blinker(@oVeoRamo),oVeoRamo:Refresh())

REDEFINE GET oCodigo VAR nCodigo PICTURE "9999" ID Ma_Codigo OF oDlgMa when .f. //valid nCodigo > 0 .and. ValCodigo(nCodigo,agrega,'Código de Cliente ')

REDEFINE GET oDetalle VAR cDetalle PICTURE "@K!" ID Ma_Detalle OF oDlgMa valid !empty(cDetalle)

REDEFINE GET oAbrevia VAR cAbrevia PICTURE "@K!" ID Ma_Abrevia OF oDlgMa

REDEFINE GET oRamo VAR nRamo PICTURE "99" ID Ma_Ramo OF oDlgMa valid veoramo(@nRamo,@cVeoRamo) .and. (oRamo:Refresh(),oVeoRamo:Refresh(),.t.)

/*

REDEFINE DYNAMIC SAY VAR cVeoRamo ID Ma_VeoRamo OF oDlgMa;

         HORIZONTAL SCROLL WRAP;

         RIGHT SHADED;

         COLOR CLR_WHITE, CLR_BLUE //FONT oFont

*/

REDEFINE SAY oVeoRamo VAR cVeoRamo PICTURE "@K!" ID Ma_VeoRamo OF oDlgMa

REDEFINE GET oCosto VAR nCosto PICTURE "999,999.99" ID Ma_Costo OF oDlgMa valid nCosto>0

REDEFINE GET oUltActPre VAR dUltActPre ID Ma_CostoAl OF oDlgMa

REDEFINE GET oUnidad VAR cUnidad PICTURE "@K!" ID Ma_Unidad OF oDlgMa

REDEFINE GET oLargo VAR nLargo PICTURE "999.999" ID Ma_Largo OF oDlgMa

REDEFINE GET oAncho VAR nAncho PICTURE "999.999" ID Ma_Ancho OF oDlgMa

REDEFINE GET oPeso VAR nPeso PICTURE "999999" ID Ma_Peso OF oDlgMa

REDEFINE GET oObserva VAR cObserva PICTURE "@K!" ID Ma_Observa OF oDlgMa

REDEFINE GET oProve1 VAR nProve1 PICTURE "9999" ID Ma_Prove1 OF oDlgMa valid VeoProve(@nProve1,cVeoProve1) .and. (oProve1:Refresh(),oVeoProve1:Refresh(),.t.)

REDEFINE SAY oVeoProve1 VAR cVeoProve1 PICTURE "@K" ID Ma_VeoProv1 OF oDlgMa

REDEFINE GET oPreProv1 VAR nPreProv1 PICTURE "999,999.99" ID Ma_PreProv1 OF oDlgMa when nProve1>0

REDEFINE GET oFecPrePr1 VAR dFecPrePr1 ID Ma_PreProv1Al OF oDlgMa when nProve1>0

REDEFINE GET oProve2 VAR nProve2 PICTURE "9999" ID Ma_Prove2 OF oDlgMa valid VeoProve(@nProve2,cVeoProve2,.t.) .and. (oProve2:Refresh(),oVeoProve2:Refresh(),.t.)

REDEFINE SAY oVeoProve2 VAR cVeoProve2 PICTURE "@K" ID Ma_VeoProv2 OF oDlgMa

REDEFINE GET oPreProv2 VAR nPreProv2 PICTURE "999,999.99" ID Ma_PreProv2 OF oDlgMa when nProve2>0

REDEFINE GET oFecPrePr2 VAR dFecPrePr2 ID Ma_PreProv2Al OF oDlgMa when nProve2>0

REDEFINE GET oProve3 VAR nProve3 PICTURE "9999" ID Ma_Prove3 OF oDlgMa valid VeoProve(@nProve3,cVeoProve3,.t.) .and. (oProve3:Refresh(),oVeoProve3:Refresh(),.t.)

REDEFINE SAY oVeoProve3 VAR cVeoProve3 PICTURE "@K" ID Ma_VeoProv3 OF oDlgMa

REDEFINE GET oPreProv3 VAR nPreProv3 PICTURE "999,999.99" ID Ma_PreProv3 OF oDlgMa when nProve3>0

REDEFINE GET oFecPrePr3 VAR dFecPrePr3 ID Ma_PreProv3Al OF oDlgMa when nProve3>0

REDEFINE BTNBMP oAceptar ID Ma_Aceptar OF oDlgMa FILENAME "ACEPTAR.BMP" ACTION Eval(Graba)

REDEFINE BTNBMP oCancelar ID Ma_Cancelar OF oDlgMa FILENAME "CANCELA.BMP" CANCEL ACTION oDlgMa:End()

oAceptar:lTransparent = .t.

oCancelar:lTransparent = .t.

ACTIVATE DIALOG oDlgMa CENTERED

if lSave

 if agrega

    Materia-&gt;(DbAppend())

    Materia-&gt;Codigo := nCodigo

 endif

 Materia-&gt;Detalle    :=  cDetalle

 Materia-&gt;Abrevia    :=  cAbrevia

 Materia-&gt;Ramo       :=  nRamo

 Materia-&gt;Costo      :=  nCosto

 Materia-&gt;Unidad     :=  cUnidad

 Materia-&gt;Largo      :=  nlargo

 Materia-&gt;Ancho      :=  nAncho

 Materia-&gt;Peso       :=  nPeso

 Materia-&gt;UltActPre  :=  dUltActPre

 Materia-&gt;Observa    :=  cObserva

 Materia-&gt;Prove1     :=  nProve1

 Materia-&gt;Prove2     :=  nProve2

 Materia-&gt;Prove3     :=  nProve3

 Materia-&gt;PreProv1   :=  nPreProv1

 Materia-&gt;PreProv2   :=  nPreProv2

 Materia-&gt;PreProv3   :=  nPreProv3

 Materia-&gt;FecPrePro1 :=  dFecPrePr1

 Materia-&gt;FecPrePro2 :=  dFecPrePr2

 Materia-&gt;FecPrePro3 :=  dFecPrePr3



 Acciones-&gt;(DbAppend())

 Acciones-&gt;Usuario := usuari

 Acciones-&gt;Fecha   := date()

 Acciones-&gt;Hora    := left(time(),5)

 Acciones-&gt;Detalle := if(agrega,'Agregó el Material '+alltrim(cdetalle),'Modifico el Material '+alltrim(cDetalle))



 dbcommitall()

endif

Materia->(dbsetorder(queor))

Materia->(DbGoTop())

return NIL

*----------------------------------------------------------------------------------------------------------//

//-----------------------------------------------------------------------

*

  • funcion de WILLY

*

Function Blinker(oCtrl, oTmr)

Static lOn := .f.

oTmr:DeActivate()

if lOn

oCtrl:Enable() //Hide()

else

oCtrl:Disable() //Show()

endif

lOn := !lOn

oTmr:Activate()

oCtrl:Refresh()

Return(Nil)


*

  • funcion de José

*

Static Function Fnct_Blinker(oSay1)

nCountBlink++



if (nCountBlink/2) &lt;&gt; int(nCountBlink/2)

    oSay1:Hide()

 else

    oSay1:Show()

endif



oSay1:Refresh()

return .t.

Gracias por tu tiempo.

Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Re: Parpadeo de un SAY
Posted: Sat Mar 02, 2024 11:01 PM

el problema viene por que no se ejecuta el timer y no se por que

Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: Parpadeo de un SAY
Posted: Sun Mar 03, 2024 12:20 AM
Pueda que esto te sirva, a mi me funciona bien
Code (fw): Select all Collapse
DEFINE DIALOG oDlg FONT oFont RESOURCE "IMPOREXPOR" TITLE cMensa

       DEFINE TIMER oTmr INTERVAL 1000 ACTION Blinker(oSay, oTmr)
       REDEFINE XIMAGE oImg RESOURCE "EXCEL2DB" ID 100 OF oDlg
       REDEFINE SAY oSay VAR cMen ID 125 FONT oFont1 COLOR CLR_RED OF oDlg
...
..
.
ACTIVATE DIALOG oDlg CENTER ON ( oTmr:Activate() )
oTmr:DeActivate()


//--------------------------------------------------------------------------------------------------------
Function Blinker(oCtrl, oTmr)
Static lOn := .f.
oTmr:DeActivate()
if lOn
   oCtrl:Enable() //Hide()
else
   oCtrl:Disable() //Show()
endif
lOn := !lOn
oTmr:Activate()
Return(Nil)
Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Re: Parpadeo de un SAY
Posted: Sun Mar 03, 2024 12:54 AM
prueba haciendo estos cambios:
Code (fw): Select all Collapse
DEFINE TIMER oTmr INTERVAL 50 ACTION (Fnct_Blinker(@oVeoRamo))
Code (fw): Select all Collapse
//REDEFINE SAY oVeoRamo   VAR cVeoRamo   PICTURE "@K!"        ID Ma_VeoRamo OF oDlgMa
REDEFINE SAY oVeoRamo ID Ma_VeoRamo OF oDlgMa
oVeoRamo:SetText(cVeoRamo)
Code (fw): Select all Collapse
Function Fnct_Blinker(oVeoRamo)

nCountBlink++

if (nCountBlink/2) <> int(nCountBlink/2)
oVeoRamo:Hide()
else
oVeoRamo:Show()
endif

oVeoRamo:Refresh()

return .t.
No veo esta funcion:
Code (fw): Select all Collapse
valid veoramo(@nRamo,@cVeoRamo)
"Los errores en programación, siempre están entre la silla y el teclado..."



Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin



Carora, Estado Lara, Venezuela.
Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Re: Parpadeo de un SAY
Posted: Sun Mar 03, 2024 12:24 PM

Gracias Willy, ya había probado tu solución y me fallaba porque me faltaba pasar oTmr como @oTmr

asi me funciona perfecto. Gracias!!!

José: Probé tu sugerencia y no me funciona. no me muestra en ningún caso el detalle.

MUCHAS GRACIAS por tu tiempo.

José Camilo

Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Re: Parpadeo de un SAY
Posted: Sun Mar 03, 2024 03:49 PM

José, lo que estas necesitando no reviste mayor complicación.

Si quieres lo podemos ver mañana lunes por anydesk.

No se en que pais estas, sera ponernos de acuerdo a que hora, tomando en cuenta las diferencia horaria. Yo estoy en Venezuela.

"Los errores en programación, siempre están entre la silla y el teclado..."



Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin



Carora, Estado Lara, Venezuela.
Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Re: Parpadeo de un SAY
Posted: Sun Mar 03, 2024 10:03 PM
Estimado José.
Estoy en Argentina. Te agradezco infinitamente tu predisposición. Ya lo soluciones.
En mi caso TU muletilla va como anillo al dedo!!!!

"Los errores en programación, siempre están entre la silla y el teclado..."
:D :D :D

Muchas Gracias!!!