DOS Dudas
DOS Dudas
Compañeros, muy buenas:
Tengo 2 dudas y no consigo resolverlas:
1) ¿Cómo insertar un GIF animado en un DIALOGS construido desde RECURSO? Probé según testgif.prg, haciendo un
TGif():New( oWnd, "..\gifs\halo.gif", 10, 10 ), pero no llega NI a aparecer el GIF
2) ¿Se puede hacer que aparezca un msginfo en una solapa "disable" de un folder cuando el usuario haga "click" ?
Mil gracias.
Un saludo.
LORENZO,
desde Cádiz, España
Tengo 2 dudas y no consigo resolverlas:
1) ¿Cómo insertar un GIF animado en un DIALOGS construido desde RECURSO? Probé según testgif.prg, haciendo un
TGif():New( oWnd, "..\gifs\halo.gif", 10, 10 ), pero no llega NI a aparecer el GIF
2) ¿Se puede hacer que aparezca un msginfo en una solapa "disable" de un folder cuando el usuario haga "click" ?
Mil gracias.
Un saludo.
LORENZO,
desde Cádiz, España
- FranciscoA
- Posts: 2164
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: DOS Dudas
Hola, aqui tienes un ejemplo completo, usando METEREX :
Code: Select all | Expand
//---------------------------------------------------------------------
Function ReIndexar(aAlias, lTodo)
local oDlg, oAnimate, oMeter1, oMeter2, oSay1, oSay2, oSay3, oBtnCancel
local lEnd:=.f.
local n:=0, nMonto1:=0, nMonto2:=0
local oAnimate2
local nProg,nProg2
DEFAULT lTodo:=.f.
DEFINE DIALOG oDlg RESOURCE "CopyFiles" TRANSPARENT ;
TITLE "Creando ficheros indices (Reindexando)"
REDEFINE SAY oSay1 ID 110 OF oDlg //COLOR nClrTxt
REDEFINE SAY oSay2 ID 120 OF oDlg //COLOR nClrTxt
REDEFINE SAY oSay3 ID 140 OF oDlg //COLOR nClrTxt
REDEFINE METEREX oMeter1 VAR nProg ID 130 TOTAL 50 ROUND ; // ROUNDSIZE 6 //;
GRADIENT TRACK { { 1/2, nRGB( 198, 203, 213 ), nRGB( 219, 224, 233 ) },; //fondo
{ 1/2, nRGB( 224, 238, 237 ), nRGB( 224, 238, 237 ) } } ;
LINECOLORS nRGB( 110, 151,204 ), CLR_WHITE //Borde
REDEFINE METEREX oMeter2 VAR nProg2 ID 150 TOTAL 50 ROUND ; // ROUNDSIZE 6 //;
GRADIENT CHUNK { { 1/2, nRGB( 255, 251, 229 ), nRGB( 250, 223, 143 ) } , ; //barra
{ 1/2, nRGB( 244, 194, 51 ), nRGB( 252, 235, 173 ) } } ;
LINECOLORS nRGB( 110, 151,204 ), CLR_WHITE //borde
REDEFINE BUTTON oBtnCancel ID 2 OF oDlg //;
***ACTION ( lEnd := .t., SysRefresh(), MisAreas(), oAnimate:Stop(), MsgStop("Reindexacion ha sido abortada por el usuario.","Advertencia"), oDlg:End() )
oMeter2:nTotal = LEN(aIndices)
nTotAvance:=0
oDlg:bStart := { || oBtnCancel:Hide(),;
oAnimate:=TGif():New( oDlg, ".\Clip1.gif", 1,oDlg:nLeft()+40),;
oAnimate2:=TGif():New( oDlg, ".\RelojArena.gif", 1,oDlg:nWidth()-120),;
Reindexe( aAlias, oSay1, oSay2, oSay3, oMeter1, oMeter2, @lEnd, oDlg, lTodo ) }
ACTIVATE DIALOG oDlg CENTERED
oAnimate:Stop()
oAnimate2:Stop()
SysRefresh()
Return NIL
//---------------------------------------------------------------------------
Function Reindexe( aAlias, oSay1, oSay2, oSay3, oMeter1, oMeter2, lEnd, oDlg, lTodo )
local n:=0
local nInicia:=Seconds(),nFinaliza:=0
oMeter2:Set( 0 )
For n := 1 to Len( aAlias )
IF ! File( aAlias[ n ]+".dbf" )
MsgInfo( "Fichero no encontrado: " + aAlias[ n ], "Advertencia" )
loop
ELSE
DBSELECTAREA( aAlias[n] )
oSay1:SetText( "Base de Datos Actual: " + upper(aAlias[n]) )
If UPPER( aAlias[n] )="MCONTAB"
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,"mcontab->cuenta+mcontab->scuenta+mcontab->sscuenta+mcontab->ssscuenta+mcontab->sssscuenta","MCONTAB" )
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,"mcontab->nombre","MCONTNOM" )
ElseIf UPPER( aAlias[n] )="COMPROBD"
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,"COMPROBD->NUMDOC","COMPROBD" )
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,"COMPROBD->CTA+COMPROBD->SCTA+COMPROBD->SSCTA+COMPROBD->SSSCTA+COMPROBD->SSSSCTA","COMPDCTA" )
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,"COMPROBD->FECHEMIS","COMPDFEC" )
ElseIf UPPER( aAlias[n] )="NOTASDC"
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,"NOTASDC->numdoc","NOTASDC" )
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,"NOTASDC->cta+NOTASDC->scta+NOTASDC->sscta+NOTASDC->ssscta+NOTASDC->sssscta","NOTASCTA" )
IntegIndex( oSay2,oMeter1,oMeter2,oSay3,"NOTASDC->FECHEMIS","NOTASFEC" )
Endif
ENDIF
Next
nFinaliza:= (Seconds()-nInicia)/60
if lTodo
MisAreas()
WritePProString("config","UltReindex",Dtoc(date()),cIniFile)
SysRefresh()
MsgWait("Reindexación completada." + " Tiempo (Minutos): "+alltrim(str(nFinaliza)),,2)
endif
SysRefresh()
oDlg:End()
return(NIL)
//----------------------------------------------------------------
Function IntegIndex( oSay2,oMeter1,oMeter2,oSay3,Campos,cNombIndice )
local nVar, nStep, nTotal
oSay2:SetText( "Integrando Indice " + cNombIndice )
nTotal := LastRec()
nStep := Max( Int( nTotal * .02 ), 1 ) // actualizar el meter cada 2% del progreso es mas rapido que por cada registro
nVar := 0
oMeter1:nTotal = nTotal
oMeter1:Set( 0 )
nTotAvance+=1
INDEX ON &(Campos) TO &(cNombIndice);
EVAL {|| oMeter1:Set( nVar += nStep ) , SysRefresh(), .t. } EVERY nStep
oMeter1:Set( nTotal )
oMeter2:Set( nTotAvance )
oSay3:SetText( "Indices creados: "+Transform(nTotAvance,"99,999,999") )
Return nil
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- karinha
- Posts: 7993
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 6 times
- Contact:
Re: DOS Dudas
Excelente Francisco, Puedes disponibilizar, Clip1.gif y RelojArena.gif, porfa?
".\Clip1.gif", 1,oDlg:nLeft()+40),;
oAnimate2:=TGif():New( oDlg, ".\RelojArena.gif"
Gracias, salu2.
".\Clip1.gif", 1,oDlg:nLeft()+40),;
oAnimate2:=TGif():New( oDlg, ".\RelojArena.gif"
Gracias, salu2.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
- FranciscoA
- Posts: 2164
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: DOS Dudas
Para lo segundo (solo una idea), prueba con:
if obj:lActive = .f.
obj:bLClicked := {|| MsgInfo("Hola") }
endif
if obj:lActive = .f.
obj:bLClicked := {|| MsgInfo("Hola") }
endif
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- FranciscoA
- Posts: 2164
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: DOS Dudas
Karinha:
http://www.4shared.com/photo/sSvtrBPZba/Clip1.html
http://www.4shared.com/photo/w9NdFFf3ba/RelojArena.html
Saludos.
http://www.4shared.com/photo/sSvtrBPZba/Clip1.html
http://www.4shared.com/photo/w9NdFFf3ba/RelojArena.html
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
- karinha
- Posts: 7993
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 6 times
- Contact:
- FranciscoA
- Posts: 2164
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: DOS Dudas
Muchas gracias, Karinha. Está muy bueno.
Saludos.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Re: DOS Dudas
FranciscoA
Lamento decirte que tu sugerencia sobre los FOLDER DISABLE NO funciona. Lo he adaptado a mi código pero "NO sonó la flauta".
En mi caso tengo 4 folder, donde el último está DISABLE según determinadas opciones. Mi idea es que, en caso de hacer click en dicho folder y este esté DISABLE, activar un msginfo al usuario.
Haber foro, ¿Alguna otra idea?
Gracias. Un saludo.
LORENZO
Lamento decirte que tu sugerencia sobre los FOLDER DISABLE NO funciona. Lo he adaptado a mi código pero "NO sonó la flauta".
En mi caso tengo 4 folder, donde el último está DISABLE según determinadas opciones. Mi idea es que, en caso de hacer click en dicho folder y este esté DISABLE, activar un msginfo al usuario.
Haber foro, ¿Alguna otra idea?
Gracias. Un saludo.
LORENZO
- karinha
- Posts: 7993
- Joined: Tue Dec 20, 2005 7:36 pm
- Location: São Paulo - Brasil
- Been thanked: 6 times
- Contact:
Re: DOS Dudas
Francisco, este ejemplo muestra el porcentaje del índice?
Gracias.
Gracias.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Re: DOS Dudas
Haber, compañeros:
No quisiera ser pesado.... pero sigo sin que la "flauta suene"
He descubierto que si inserto un msginfo('hola'), el GIF se anima, y cuando se cierra el msginfo el GIF vuelve pararse.
Este es mi código:
Ya probé también siguiendo los pasos de "\samples\win32.prg"... Pero sin exito
Maestro, por favor, deme alguna idea.
Gracias. LORENZO.
No quisiera ser pesado.... pero sigo sin que la "flauta suene"
He descubierto que si inserto un msginfo('hola'), el GIF se anima, y cuando se cierra el msginfo el GIF vuelve pararse.
Este es mi código:
Code: Select all | Expand
funct actualizar(lmesage)
Local oAnimate
aFiles:={}
cmensaje:='... Conectando con el servidor ...'
DEFAULT lmesage:=.f. &&& mensage
DEFINE FONT oFnt1 NAME "Century Gothic" SIZE 15, 40 BOLD
DEFINE FONT oFnt2 NAME "Century Gothic" SIZE 0, 20 BOLD
define dialog vera2 resource 'actualiza1' STYLE nOr( WS_POPUP, WS_VISIBLE ) COLOR CLR_WHITE, CLR_BLACK
REDEFINE BITMAP inten id 4003 of vera2 file CAMINO+'\images\metro\internet.bmp' transparent
redefine say otex1 prompt 'Buscando actualizaciones...' id 4002 of vera2 color CLR_WHITE, CLR_BLACK font oFnt1
redefine say otex prompt 'Esta operación puede tardar varios segundos... espere, por favor' id 4004 of vera2 color CLR_HGRAY, CLR_BLACK
redefine say otex2 prompt cmensaje id 4001 of vera2 color CLR_GREEN, CLR_BLACK font oFnt2
vera2:bStart := { || (oAnimate:=TGif():New( vera2, ".\images\metro\loader.gif", 190,vera2:nLeft()+320)) }
activate dialog vera2 center nowait
cFile :=GetModuleFileName(GetInstance())
cServer:=alltrim(actual_ns) && actual_ns = actualizar. nombre servidor
cUser :=alltrim(actual_nu) && actual_nu = actualizar. nombre usuario
cPass :='xxxxxxxxx'
msginfo('hola') && <---- aquí se activa el GIF. Cuando cierro, se para.
CURSORWAIT()
if !empty(cServer) .and. !empty(actual_CA) .and. file(camino+'ActVer.exe')
oInternet:=tinternet():New()
oFtp :=tFtp():New(cServer,oInternet,cUser,cPass)
if !Empty( oFtp:hFtp )
cmensaje='Conectado al servidor... y cotejando versiones.'
.....
.....
Ya probé también siguiendo los pasos de "\samples\win32.prg"... Pero sin exito
Maestro, por favor, deme alguna idea.
Gracias. LORENZO.
- FranciscoA
- Posts: 2164
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: DOS Dudas
Yo lo intentaría asi:
Code: Select all | Expand
funct actualizar(lmesage)
Local oAnimate
aFiles:={}
cmensaje:='... Conectando con el servidor ...'
DEFAULT lmesage:=.f. &&& mensage
DEFINE FONT oFnt1 NAME "Century Gothic" SIZE 15, 40 BOLD
DEFINE FONT oFnt2 NAME "Century Gothic" SIZE 0, 20 BOLD
define dialog vera2 resource 'actualiza1' STYLE nOr( WS_POPUP, WS_VISIBLE ) COLOR CLR_WHITE, CLR_BLACK
REDEFINE BITMAP inten id 4003 of vera2 file CAMINO+'\images\metro\internet.bmp' transparent
redefine say otex1 prompt 'Buscando actualizaciones...' id 4002 of vera2 color CLR_WHITE, CLR_BLACK font oFnt1
redefine say otex prompt 'Esta operación puede tardar varios segundos... espere, por favor' id 4004 of vera2 color CLR_HGRAY, CLR_BLACK
redefine say otex2 prompt cmensaje id 4001 of vera2 color CLR_GREEN, CLR_BLACK font oFnt2
vera2:bStart := { || oAnimate:=TGif():New( vera2, ".\images\metro\loader.gif", 190,vera2:nLeft()+320) ,;
Actualizando(x,x,x,x,x,x) }
activate dialog vera2 center nowait ;
VALID ( oAnimate:End(), .t. )
RETURN LoQueDecidas
//-------------------------------------
Function Actualizando(x,x,x,x,x,x) // pasar los parametros necesarios
cFile :=GetModuleFileName(GetInstance())
cServer:=alltrim(actual_ns) && actual_ns = actualizar. nombre servidor
cUser :=alltrim(actual_nu) && actual_nu = actualizar. nombre usuario
cPass :='xxxxxxxxx'
CURSORWAIT()
if !empty(cServer) .and. !empty(actual_CA) .and. file(camino+'ActVer.exe')
oInternet:=tinternet():New()
oFtp :=tFtp():New(cServer,oInternet,cUser,cPass)
if !Empty( oFtp:hFtp )
cmensaje='Conectado al servidor... y cotejando versiones.'
oText2:SetText(cMensaje) ; oText2:Refresh()
.....
.....
//Supongo que por aqui cierras el dialog
.....
Return LoQueDecidas
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh-MySql-TMySql
Chinandega, Nicaragua.
Fwxh-MySql-TMySql