Amigos:
Mi necesidad es hacer que una celda de un xBrowse tenga un efecto Blink o parpadee un texto depende de una variable lógica o campo lógico de un dbf. Es posible esto?
Otra:
Se podra meter un objeto de la clase TDSay en una celda de xbrowse ???
Bienvenida cualquier sugerencia!
Muchos saludos y gracias de antemano.-
Objetos dentro de un xBrowse
- TecniSoftware
- Posts: 213
- Joined: Fri Oct 28, 2005 6:29 pm
- Location: Quilmes, Buenos Aires, Argentina
Objetos dentro de un xBrowse
Last edited by TecniSoftware on Wed Oct 08, 2008 7:30 pm, edited 1 time in total.
Alejandro Cebolido
Buenos Aires, Argentina
Buenos Aires, Argentina
Hola,
Mira se sirve:
http://www.fivewin.com.br/exibedicas.asp?id=887
Otra:
Se podra meter un objeto de la clase TDSay en una celda de xbrowse ???
Creo que no. Pués DSAY.PRG és solo para SAYS en dialogos.
Regards, saludos.
Mira se sirve:
http://www.fivewin.com.br/exibedicas.asp?id=887
Otra:
Se podra meter un objeto de la clase TDSay en una celda de xbrowse ???
Creo que no. Pués DSAY.PRG és solo para SAYS en dialogos.
Regards, saludos.
João Santos - São Paulo - Brasil
- TecniSoftware
- Posts: 213
- Joined: Fri Oct 28, 2005 6:29 pm
- Location: Quilmes, Buenos Aires, Argentina
- TecniSoftware
- Posts: 213
- Joined: Fri Oct 28, 2005 6:29 pm
- Location: Quilmes, Buenos Aires, Argentina
Como se podria mejorar el tiempo en que parpadea el texto?
Originalmente la funcion hace
If Val(Right(Time(),2)) % 2 == 0
lo que hace 1 parpadeo por segundo y yo quisiera que lo haga mas rápido.
Se me ocurrió que haga
If HB_RANDOMINT( 1, 999999 ) % 2 == 0
pero el parpadeo no es constante. Alguna idea ???
Saludos!
Originalmente la funcion hace
If Val(Right(Time(),2)) % 2 == 0
lo que hace 1 parpadeo por segundo y yo quisiera que lo haga mas rápido.
Se me ocurrió que haga
If HB_RANDOMINT( 1, 999999 ) % 2 == 0
pero el parpadeo no es constante. Alguna idea ???
Saludos!
Alejandro Cebolido
Buenos Aires, Argentina
Buenos Aires, Argentina
Hola, se te comprendo:
Code: Select all
****************************************************************************
static procedure OnInit()
****************************************************************************
*
* Executar tarefa ao iniciar o dialog
* Parametros: nenhum
* Retorno: Nenhum
*
* Autor: Anderson
* 05/04/2008 - 09:38:53
*
****************************************************************************
Define Timer oTmr ;
Interval 300 ;
Of oDlg ;
Action (oBrw:Paint(),oBrw:Refresh(),oBrw:UpStable())
Activate Timer oTmr
Return Nil
João Santos - São Paulo - Brasil
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
existe una forma de hacerlo, lo que pasa es que funciona si la celda esta activa, me imagino que no es eso lo que buscas, pero igual lo menciono
esto lo obtube de un post anterio...
modificando algunas lineas y eliminando otras, etc...
http://forums.fivetechsoft.com/viewtopic.php?t=10981
esto lo obtube de un post anterio...
modificando algunas lineas y eliminando otras, etc...
http://forums.fivetechsoft.com/viewtopic.php?t=10981
Code: Select all
#include "FIVEWIN.CH"
#INCLUDE "XBROWSE.CH"
#INCLUDE "DSAY.CH"
#include "Common.ch"
PROCEDURE TEST( cDep )
**************
LOCAL Arr[0]
LOCAL oDlg , oBrw , oBut
LOCAL lNieuw := .F.
local aWnd[ 2 ]
AADD( Arr, {"ESTO ES UNA PRUEBA DSAY" } )
AADD( Arr, {"segunda prueba" } )
define window aWnd[ 1 ] title "Prueba DSAY en xBrowse" of dato:oWnd mdichild no sysmenu NOZOOM
define dialog aWnd[ 2 ] of aWnd[ 1 ] resource "PRUEBA"
oBrw := TXBrowse():New( aWnd[ 2 ] )
oBrw:CreateFromResource( 400 )
oBrw:SetArray( Arr )
oBrw:aCols[ 1 ]:cHeader = "ARRAY PRUEBA DSAY"
IF ! __ObjHasData(oBrw:aCols[1],"OBRWOBJ")
__OBJADDDATA(oBrw:aCols[1],"oBrwObj")
END
REDEFINE DYNAMIC SAY oBrw:aCols[1]:oBrwObj VAR oBrw:aArrayData[ oBrw:nRowSel ] ID 402 OF aWnd[ 2 ];
horizontal SCROLL SPEED 50 WRAP
oBrw:bLDblClick := {||ActivateoBrwDlg(oBrw , aWnd[ 2 ])}
REDEFINE BUTTONBMP oBut ID 300 OF aWnd[ 2 ] bitmap "salir";
ACTION ( aWnd[ 1 ]:End() ) ;
tooltip "Salir del Módulo" prompt "Salir" TOP
ACTIVATE DIALOG aWnd[ 2 ] nowait;
ON INIT ( aWnd[ 2 ]:move( 0,0 ),;
oBrw:SetFocus(), ;
AEVAL(oBrw:aCols,{|oCol|IIF(IsObJect(oCol:oBrwObj),oCol:oBrwObj:Hide(),) }) );
VALID IIF(GETKEYSTATE(VK_ESCAPE) ,( ActivateDlg(aWnd[ 2 ],oBrw) , .F.), .T. )
activate window aWnd[ 1 ] on init aWnd[ 1 ]:SetSize(aWnd[ 2 ]:nWidth, aWnd[ 2 ]:nHeight )
RETURN
********************************************************************************************************************************
STATIC PROCEDURE ActivateoBrwDlg(oBrw,oDlg)
*******************************
LOCAL nRow
LOCAL nCol
lOCAL nWidth
LOCAL nHeight
LOCAL nKol //:= oBrw:nColSel
LOCAL x
LOCAL oCol , i , Obj , Gehi
LOCAL aDisPlay
LOCAL Self := HB_QSelf()
Nr := oBrw:nArrayAt
nKol := oBrw:nColSel
FOR EACH Obj IN oDlg:aControls
Obj:Disable()
NEXT
nRow := ( ( oBrw:nRowSel - 1 ) * oBrw:nRowHeight ) + oBrw:HeaderHeight() + 2 + oBrw:nTop
nHeight := oBrw:nRowHeight - 4
aDisPlay := oBrw:GetDisplayCols()
FOR EACH oCol IN oBrw:aCols
IF IsObject(oCol:oBrwObj)
i := Hb_EnumIndex()
WITH OBJECT oCol
nCol := :nDisPlayCol + 2 + oBrw:nLeft
nWidth := :nWidth - 4
x := oBrw:aArrayData[Nr,oCol:nCreationOrder]
IF __ObjHasMethod(:oBrwObj,"VARPUT")
:oBrwObj:Varput(x)
:oBrwObj:Refresh()
END
IF (i IN aDisplay)
IF (i IN aDisplay) .AND. i == aDisplay[1]
Obj := :oBrwObj
Gehi := i
END
:oBrwObj:Enable()
:oBrwObj:Move(nRow, nCol, nWidth, nHeight, .t. )
:oBrwObj:Show()
IF i == nKol
Obj := :oBrwObj
Gehi := i
END
END
END
END
NEXT
IF ! IsNil(Obj)
Obj:Setfocus()
END
RETURN
********************************************************************************************************************************
STATIC PROCEDURE ActivateDlg(oDlg,oBrw)
***************************************
LOCAL oCol , i , Obj
LOCAL Nr
IF oDlg:aControls[1]:lActive
oBut:Setfocus()
return
END
FOR EACH Obj IN oDlg:aControls
Obj:Enable()
NEXT
FOR EACH oCol IN oBrw:aCols
IF IsObject(oCol:oBrwObj)
oCol:oBrwObj:Hide()
END
NEXT
oBrw:setFocus()
RETURN
- TecniSoftware
- Posts: 213
- Joined: Fri Oct 28, 2005 6:29 pm
- Location: Quilmes, Buenos Aires, Argentina
Con las lineas de código que posteó karinha ( muchisimas gracias! ) y algunas modificaciones y simplificaciones, elaboré otro ejemplo en el que metí al xbrowse 2 objetos y que pasan a formar parte del mismo: Un objeto de la clase TDSay() y un TSlider() y los conviné con una dbf normal.
Cosillas:
- El dbf es CUSTOMER.DBF y esta en el dir samples de FW
- Los objetos solo se visualizan el la linea seleccionada
- El ejemplo solo me funciona con un xBrowse dentro de un dialog, sería excelente hacerlo funcionar en una una ventana mdichild.
- Al aparecer el dialog, si no se toca nada, no se ven los objetos, pero
al mover el puntero se podrán ver. No he logrado que los muestre al inicio.
- El slider, si bien se actualiza en funcion del campo AGE de la dbf, no he
logrado moverlo, ya que mi intencion era modificar datos como se puede ver en ON CHANGE. Alguien sabe por que no se puede mover?
En teoría, se podría llegar a colocarle casi cualquier objeto en una linea al xbrowse.
En fin, me parecio interesante y estaría bueno que se lo pudiera
perfeccionar.
Link: http://www.mediafire.com/download.php?2mjmgdmnkzd
Muchos saludos!
Espero sus comentarios.
Cosillas:
- El dbf es CUSTOMER.DBF y esta en el dir samples de FW
- Los objetos solo se visualizan el la linea seleccionada
- El ejemplo solo me funciona con un xBrowse dentro de un dialog, sería excelente hacerlo funcionar en una una ventana mdichild.
- Al aparecer el dialog, si no se toca nada, no se ven los objetos, pero
al mover el puntero se podrán ver. No he logrado que los muestre al inicio.
- El slider, si bien se actualiza en funcion del campo AGE de la dbf, no he
logrado moverlo, ya que mi intencion era modificar datos como se puede ver en ON CHANGE. Alguien sabe por que no se puede mover?
En teoría, se podría llegar a colocarle casi cualquier objeto en una linea al xbrowse.
En fin, me parecio interesante y estaría bueno que se lo pudiera
perfeccionar.
Link: http://www.mediafire.com/download.php?2mjmgdmnkzd
Muchos saludos!
Espero sus comentarios.
Alejandro Cebolido
Buenos Aires, Argentina
Buenos Aires, Argentina