Necesito ayuda urgente

Necesito ayuda urgente

Postby JHON JAIRO VALENCIA DIAZ » Sat Oct 18, 2008 9:22 pm

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

Postby jllinas » Sat Oct 18, 2008 9:37 pm

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

Postby joseluisysturiz » Sat Oct 18, 2008 11:19 pm

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

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Postby Vital » Sat Oct 18, 2008 11:27 pm

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
Vital
 
Posts: 58
Joined: Mon Nov 06, 2006 6:56 am

Re: Necesito ayuda urgente

Postby FranciscoA » Sun Oct 19, 2008 3:46 pm

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

Postby jrestojeda » Mon Oct 20, 2008 1:24 pm

Prueba lo siguiente para el botón, esto lo habilitará cuando se cumplan las condiciones del WHEN()

Code: Select all  Expand view
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
User avatar
jrestojeda
 
Posts: 601
Joined: Wed Jul 04, 2007 3:51 pm
Location: Buenos Aires - Argentina

Postby Marcelo Via Giglio » Mon Oct 20, 2008 3:33 pm

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

Postby JHON JAIRO VALENCIA DIAZ » Sat Oct 25, 2008 4:30 pm

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

Postby JHON JAIRO VALENCIA DIAZ » Sat Oct 25, 2008 4:33 pm

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

Postby joseluisysturiz » Sat Oct 25, 2008 5:17 pm

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


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 48 guests