Page 1 of 1

Necesito ayuda urgente

Posted: Sat Oct 18, 2008 9:22 pm
by JHON JAIRO VALENCIA DIAZ
Estoy haciendo un programa donde muestro un listbox y seis get, pero cuando selecione un registro con doble click o enter en el listbox el cursor caiga en seguida en el primer get osea ologro1, pero ademas que el boton de registrar oBoton1 este desactivado y cuando ingrese los datos al ultimo get que es ofalla se active.

FWH 7,01

Esta es la rutina:

LOCAL oLbx
LOCAL oBoton1
local oBoton2
local ologro1,ologro2,ologro3,ologro4,ocualit,ofallas
LOCAL lSalir3 := .F.
LOCAL lSalvar3 := .F.



DEFINE DIALOG oDlg NAME "nuecali";
TITLE "Registro de Calificaciones" of oWnd


indextempo() //10

dbSelectArea(10)
temporal->(OrdSetFocus("codtempo"))
go top
locate for temporal->codigo==ccodigo3
if temporal->codigo==ccodigo3
store temporal->nomb_area to nomasign
endif


dbSelectArea(13)
tempalum->(OrdSetFocus("codigo"))
go top
REDEFINE LISTBOX oLbx;
FIELDS TEMPALUM->CODIGO,;
TEMPALUM->Nombre,;
TEMPALUM->CURSO;
HEADERS "CÛdigo","Nombre","Curso";
FIELDSIZES 40,210,20;
ID 104;
ON LEFT DBLCLICK clientes( oLbx, .F. );
OF oDlg;
COLOR CLR_BLUE, CLR_WHITE


REDEFINE get ologro1 var clogro1 PICTURE "!!##" ID 105 OF oDlg
REDEFINE get ologro2 var clogro2 PICTURE "!!##" ID 106 OF oDlg
REDEFINE get ologro3 var clogro3 PICTURE "!!##" ID 107 OF oDlg
REDEFINE get ologro4 var clogro4 PICTURE "!!##" ID 108 OF oDlg
REDEFINE get ocualit var ccualit PICTURE "!" ID 109 OF oDlg
REDEFINE get ofallas var cfallas PICTURE "99" ID 110 OF oDlg

REDEFINE BUTTONBMP oBoton1 ID 114 OF oDlg ;
ACTION grava44()

REDEFINE BUTTONBMP oBoton2 ID 111 OF oDlg ;
ACTION ( lSalir3 := .T. , oDlg:End() )

ACTIVATE DIALOG oDlg CENTER

IF lSalir3
Return Nil
endif

RETURN( NIL )

Posted: Sat Oct 18, 2008 9:37 pm
by jllinas
Perfecto Jhon, pero pasanos tambien la función clientes(), que es donde se supone que estas haciendo todo esto que dices.... asi podríamos ayudarte sobre lo que quieres.

¿O es que no la tienes aún?

Posted: Sat Oct 18, 2008 11:19 pm
by joseluisysturiz
Deja ver grava44() alli es donde debes tener algun problema.

Posted: Sat Oct 18, 2008 11:27 pm
by Vital
Cuando le das el dobleclick :

En el listbox DBLCLICK (clientes( oLbx, .F. ),ologro1:SetFocus())

Asi despues del proceso de Clientes te mandara el foco al primer get

Re: Necesito ayuda urgente

Posted: Sun Oct 19, 2008 3:46 pm
by FranciscoA
JHON JAIRO VALENCIA DIAZ wrote:Estoy haciendo un programa donde muestro un listbox y seis get, pero cuando selecione un registro con doble click o enter en el listbox el cursor caiga en seguida en el primer get osea ologro1, pero ademas que el boton de registrar oBoton1 este desactivado y cuando ingrese los datos al ultimo get que es ofalla se active.

FWH 7,01

Esta es la rutina:

LOCAL oLbx
LOCAL oBoton1
local oBoton2
local ologro1,ologro2,ologro3,ologro4,ocualit,ofallas
LOCAL lSalir3 := .F.
LOCAL lSalvar3 := .F.



DEFINE DIALOG oDlg NAME "nuecali";
TITLE "Registro de Calificaciones" of oWnd


indextempo() //10

dbSelectArea(10)
temporal->(OrdSetFocus("codtempo"))
go top
locate for temporal->codigo==ccodigo3
if temporal->codigo==ccodigo3
store temporal->nomb_area to nomasign
endif


dbSelectArea(13)
tempalum->(OrdSetFocus("codigo"))
go top
REDEFINE LISTBOX oLbx;
FIELDS TEMPALUM->CODIGO,;
TEMPALUM->Nombre,;
TEMPALUM->CURSO;
HEADERS "CÛdigo","Nombre","Curso";
FIELDSIZES 40,210,20;
ID 104;
ON LEFT DBLCLICK clientes( oLbx, .F. );
OF oDlg;
COLOR CLR_BLUE, CLR_WHITE


REDEFINE get ologro1 var clogro1 PICTURE "!!##" ID 105 OF oDlg
REDEFINE get ologro2 var clogro2 PICTURE "!!##" ID 106 OF oDlg
REDEFINE get ologro3 var clogro3 PICTURE "!!##" ID 107 OF oDlg
REDEFINE get ologro4 var clogro4 PICTURE "!!##" ID 108 OF oDlg
REDEFINE get ocualit var ccualit PICTURE "!" ID 109 OF oDlg
REDEFINE get ofallas var cfallas PICTURE "99" ID 110 OF oDlg

REDEFINE BUTTONBMP oBoton1 ID 114 OF oDlg ;
ACTION grava44()

REDEFINE BUTTONBMP oBoton2 ID 111 OF oDlg ;
ACTION ( lSalir3 := .T. , oDlg:End() )

ACTIVATE DIALOG oDlg CENTER

IF lSalir3
Return Nil
endif

RETURN( NIL )

Prueba esto a ver que te resulta:
ACTIVATE DIALOG oDlg CENTER ON INIT oBoton1:Disable()
*
*
REDEFINE get ofallas var cfallas PICTURE "99" ID 110 OF oDlg ;
VALID (oBoton1:Enable(), .T.)

Saludos.

Posted: Mon Oct 20, 2008 1:24 pm
by jrestojeda
Prueba lo siguiente para el botón, esto lo habilitará cuando se cumplan las condiciones del WHEN()

Code: Select all

REDEFINE BUTTONBMP oBoton1 ID 114 OF oDlg ; 
ACTION grava44();
WHEN( !EMPTY(clogro1) .and. !EMPTY(clogro2) .and.;
      !EMPTY(clogro3) .and. !EMPTY(clogro4) .and.;
      !EMPTY(ccualit) .and. cfallas>0 ) 
Espero te sirva.
Saludos, desde Argentina Esteban

Posted: Mon Oct 20, 2008 3:33 pm
by Marcelo Via Giglio
Jairo,

una idea

LOCA lEdit := .F. ...
...

REDEFINE LISTBOX oLbx .....
ON DBLCLICK ( lEdit := .T., oDlg:aEvalWHen(), oLogro1:PostMsg( WM_RBUTTONDOWN ) )


REDEFINE GET oLogro1 VAR ..... WHEN lEdit
REDEFINE GET..... WHEN lEdit
.....
REDEFINE GET oFalla WHEN lEdit

REDEFINE BOTTON ID ....... WHEN ! lEdit

La parte del botton no esta clara para mi, depende que quieres, si quieres que se active cuando pones algo al ultimo get, usuaras ON CHANGE en el get cuando gana el foco usuaras bGotFocus .. cuando pasa el ultimo get usaras VALID, utilizo oGet:PostMsg( WM_RBUTTONDOWN ) para poner el foco porque el setfocus con los get nunca me ha funcionado bien.

Espero que sean ideas que te puedan ayudar

saludos

Marcelo

Posted: Sat Oct 25, 2008 4:30 pm
by JHON JAIRO VALENCIA DIAZ
jllinas wrote:Perfecto Jhon, pero pasanos tambien la función clientes(), que es donde se supone que estas haciendo todo esto que dices.... asi podríamos ayudarte sobre lo que quieres.

¿O es que no la tienes aún?

jllinas

Esta es la funcion clientes()

//-------------------------------------
FUNCTION Clientes(ologro1,oLbx, lNuevo )
//-------------------------------------
DEFAULT lNuevo := .F.
dbSelectArea(13)
tempalum->(OrdSetFocus("codigo"))
DEFAULT lNuevo := .F.
IF lNuevo
GOTO BOTTOM
SKIP
ENDIF
cnombre := tempalum->nombre
ccodigo5 := tempalum->codigo
dbSelectArea(12)
califica->(OrdSetFocus("codigo"))
go top
locate for califica->codigo+califica->curso+califica->periodo+califica->codarea==ccodigo5+ccodigo2+ccodigo4+ccodigo3
if califica->codigo+califica->curso+califica->periodo+califica->codarea==ccodigo5+ccodigo2+ccodigo4+ccodigo3
MsgWait( "Ese registro ya Existe" )
endif

RETURN( NIL )


Cualquier colaboracion que me hagan se lo agradezco

Posted: Sat Oct 25, 2008 4:33 pm
by JHON JAIRO VALENCIA DIAZ
joseluisysturiz wrote:Deja ver grava44() alli es donde debes tener algun problema.

joseluisysturiz

Esta es la function graba44

//------------------------------------------------------------------
STATIC FUNCTION grava44(oboton1)
//------------------------------------------------------------------
dbSelectArea(12)
califica->(OrdSetFocus("codigo"))
locate for califica->codigo+califica->curso+califica->periodo+califica->codarea==ccodigo5+ccodigo2+ccodigo4+ccodigo3
if califica->codigo+califica->curso+califica->periodo+califica->codarea<>ccodigo5+ccodigo2+ccodigo4+ccodigo3
APPEND BLANK
replace califica->nombre with cnombre
replace califica->codigo with ccodigo5
replace califica->contrato with ccodigo,califica->curso with ccodigo2,califica->jornada with ccodigo1
replace califica->periodo with ccodigo4,califica->codarea with ccodigo3
replace califica->logro1 with clogro1,califica->logro2 with clogro2,califica->logro3 with clogro3,califica->logro4 with clogro4
replace califica->cualitati with ccualit
replace califica->nombrea with nomasign
replace califica->fallas with cfallas
sndplaySound( "colegio\click.wav" )
else
MsgWait( "Ese registro ya Existe......." )
oBrw6:Refresh() // Repintamos el ListBox
endif
RETURN(nil)

Las otras soluciones que me han dicho los otros amigos del forums los estoy practicando

Gracias

Posted: Sat Oct 25, 2008 5:17 pm
by joseluisysturiz
Jhon, fijate en unos detalles que he visto,
en la llamda a la funcion clientes en el listbox
ON LEFT DBLCLICK clientes( oLbx, .F. );

pero clientes recibe de esta manera
FUNCTION Clientes(ologro1, oLbx, lNuevo )

asi los parametro pasan oLbx a oLogro1 y .F. a oLbx

cambialo asi en el listbox
ON LEFT DBLCLICK clientes( ,oLbx, .F. );
o asi
ON LEFT DBLCLICK clientes(ologro1 ,oLbx, .F. );


o asi en funcion clientes
FUNCTION Clientes(oLbx, lNuevo )

lo demas que te han dicho los otros colegas depende de lo que quieras, espero te ayude esto...saludos :shock: