Necesito ayuda urgente

Post Reply
User avatar
JHON JAIRO VALENCIA DIAZ
Posts: 28
Joined: Wed Mar 07, 2007 11:34 pm
Location: COLOMBIA
Contact:

Necesito ayuda urgente

Post 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 )
User avatar
jllinas
Posts: 189
Joined: Fri Oct 14, 2005 12:33 am
Location: Santo Domingo, Dominican Republic
Contact:

Post 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?
Julio Llinás
Visita mi Blog en http://mangucybernetico.blogspot.com/
xHarbour 1.1.0 + FWH810 + Borland 5.5.1
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Post by joseluisysturiz »

Deja ver grava44() alli es donde debes tener algun problema.
Dios no está muerto...

Gracias a mi Dios ante todo!
Vital
Posts: 58
Joined: Mon Nov 06, 2006 6:56 am

Post 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
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Necesito ayuda urgente

Post 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.
User avatar
jrestojeda
Posts: 543
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Post 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
Marcelo Via Giglio
Posts: 1033
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Post 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
User avatar
JHON JAIRO VALENCIA DIAZ
Posts: 28
Joined: Wed Mar 07, 2007 11:34 pm
Location: COLOMBIA
Contact:

Post 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
User avatar
JHON JAIRO VALENCIA DIAZ
Posts: 28
Joined: Wed Mar 07, 2007 11:34 pm
Location: COLOMBIA
Contact:

Post 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
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Post 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:
Dios no está muerto...

Gracias a mi Dios ante todo!
Post Reply