AYUDA URGENTE CON COMBOBOX
Re: AYUDA URGENTE CON COMBOBOX
Compila bién e el botón de salir funciona sin problemas, solo no puedo muestrar los bitmaps, pués no pasa en la compilación.
Mira donde hice comentários con /* */ creo el erro esté en uno de elos.
Saludos.
Mira donde hice comentários con /* */ creo el erro esté en uno de elos.
Saludos.
João Santos - São Paulo - Brasil
Re: AYUDA URGENTE CON COMBOBOX
Code: Select all
#include "FiveWin.ch"
#include "xbrowse.ch"
STATIC oWnd
FUNCTION Consu_paci()
LOCAL oFont1, oFont, oSay1, oFont2, oSay
LOCAL oDlg1, oSay2
PUBLIC Fecha_hoy, total_pac := 0
PRIVATE oCod_pro1, cCod_pro1 := "", nCod_pro1
PUBLIC aProfe := {}, aPacientes := {}, oPaci
/*
SELE 1
USE Profesio Shared
Dbgotop()
IF Eof()
MsgStop( " NO Existen Profesionales Medicos " )
dbclosearea()
RETURN
ENDIF
AADD( aProfe, { "", "" } )
DO WHILE !Eof()
IF Est_pro = "S" .AND. Tip_esp = "MEDI"
AADD( aProfe, { a->Cod_pro, a->Nom_pro } )
ENDIF
a->( DbSkip() )
ENDDO
DbClosearea()
ASORT( aProfe, , , { |x, y| x[2] < y[2] } )
*/
Fecha_hoy := date()
nCod_pro1 = 0
Define Font oFont1 Name "Curier New" Size 0, 16 BOLD
Define Font oFont Name "Courier new" Size 0, 22 BOLD
Define Font oFont2 Name "Courier new" Size 0, 20 BOLD
DEFINE DIALOG oDlg1 RESOURCE "#1004"
REDEFINE SAY oSay ID 100 PROMPT "PACIENTES EN ATENCION DIA " + dtoc( Date() ) OF oDlg1 FONT oFont COLORS RGB( 12, 135, 27 )
REDEFINE SAY oSay1 ID 101 PROMPT "DOCTOR" OF oDlg1 FONT oFont COLOR RGB( 38, 74, 119 )
REDEFINE SAY oSay2 ID 120 PROMPT "TOTAL PACIENTES: " + str( total_pac, 3 ) OF oDlg1 FONT oFont2 COLOR rgb( 39, 0, 64 )
/*
REDEFINE COMBOBOX oCod_pro1 VAR nCod_pro1 ITEMS ArrTranspose( aProfe )[ 2 ] ID 102 OF oDlg1 COLORS nRGB( 9, 11, 10 ), nRGB( 73, 250, 202 );
ON CHANGE ( cCod_pro1 := ArrTranspose( aProfe )[ 1 ][oCod_pro1:nAt], Carga_paci( cCod_pro1 ), oPaci:Refresh(), oSay2:Refresh() )
*/
/*
REDEFINE XBROWSE oPaci ID 104 OF oDlg1 ;
COLUMNS 1, 2, 3, 4, 5, 6, 7;
HEADERS "Nro. ", "Nombre del Paciente" , "Folio Caja", "T. Pago", "Valor ", "Digita", "Hr. Digi";
COLSIZES 40, 350, 80, 80, 70, 80, 80 ;
FONT oFont1;
ARRAY aPacientes ;
FOOTERS LINES CELL
oPaci:bClrStd := {|| { nRGB( 0, 0, 0 ), nRGB( 255,248,220 ) } }
oPaci:bClrSelFocus := {|| { nRGB( 0, 0, 0 ), nRGB( 137, 247, 33 ) } }
oPaci:bClrHeader := {|| { CLR_BLUE, nRGB( 245, 245, 245 ) } }
oPaci:bClrSel := {|| { nRGB( 000,000,000 ), nRGB( 128,255,128 ) } }
oPaci:bClrSelFocus := {|| { nRGB( 0, 0, 0 ), nRGB( 128,255,128 ) } }
oPaci:bClrStd := {|| { nRGB( 000,000,000 ), nRGB( 255,255,200 ) } }
oPaci:nStretchCol := STRETCHCOL_WIDEST
oCol := oPaci:AddCol()
oCol:AddResource( "#8006" )
oCol:AddResource( "#8007" )
oCol:cHeader = "Estado"
oCol:bBmpData := { || if( aPacientes[oPaci:nArrayAt,8] == "S", 1, 2 ) }
*/
REDEFINE BTNBMP ID 103 Resource "#8005" OF oDlg1 ; // <--------- Boton Para actualiza Array desde la Dbf Actualizada
ACTION ( Carga_paci( cCod_pro1 ) )
REDEFINE BTNBMP ID 105 Resource "#8004" OF oDlg1 ; // <--------- Boton salir del programa y volver al menu
ACTION ( Cierra(), oDlg1:END() )
ACTIVATE DIALOG oDlg1 CENTERED
RETURN Nil
STATIC FUNCTION Carga_paci( cCod_pro1 )
asize( aPacientes, 0 )
IF Len( cCod_pro1 ) = 0
MsgStop( "No ha Seleccionado Profesional Medico" )
RETURN .F.
ENDIF
carchi := 'PACI' + trim( cCod_pro1 )
IF !file( '&carchi..dbf' )
MsgStop( "MEDICO SELECCIONADO NO TIENE INGRESOS DE PACIENTES" )
RETURN .F.
ENDIF
SELE 2
Use &carchi Shared
IF !file( '&carchi..ntx' )
INDE ON Cod_pro + dtos( ctod( fec_ate ) ) + Str( Cor_pac, 4 ) to &carchi
ENDIF
SET INDE to &carchi
//seek cCod_pro1+dtos(date())
DbGotop()
IF eof()
MsgStop( "MEDICO SELECCIONADO NO TIENE PACIENTES EN ESPERA" )
DbClosearea()
RETURN .F.
ENDIF
STOR 0 TO total_pac
DO WHILE !Eof()
// If (ctod(fec_ate)=Fecha_hoy)
AADD( aPacientes, { b->Cor_pac, b->Nom_pac, b->Fol_caj, b->Tip_pag, b->Val_bon, b->Cod_dig, b->Hor_dig, b->Con_pac } )
total_pac = total_pac + 1
// Endif
DbSkip()
ENDDO
DbClosearea()
oPaci:SetArray( aPacientes )
oPaci:GoTop()
oPaci:Refresh()
RETURN oPaci
STATIC FUNCTION Cierra()
SET RELATION TO
CLOS DATA
sysrefresh()
RETURN nil
João Santos - São Paulo - Brasil
-
- Posts: 988
- Joined: Thu Nov 24, 2005 3:01 pm
- Location: Madrid, España
Re: AYUDA URGENTE CON COMBOBOX
Antonio,
te importaria indicar que dice la linea 1667 de la clese tget en el codigo fuente de tu copia de fivewin? \fivewin\source\classes\tget.prg Linea 1667. Si puedes copia el metodo lostfocus completo y marca cual es la linea 1667
Alogo esta fallando al cerrar la ventana, el control que tiene el foco debe tener algun problema cuando lo pierde. Puede que sea un valid o algo, ver esa linea del TGet nos puede dar una pista
te importaria indicar que dice la linea 1667 de la clese tget en el codigo fuente de tu copia de fivewin? \fivewin\source\classes\tget.prg Linea 1667. Si puedes copia el metodo lostfocus completo y marca cual es la linea 1667
Alogo esta fallando al cerrar la ventana, el control que tiene el foco debe tener algun problema cuando lo pierde. Puede que sea un valid o algo, ver esa linea del TGet nos puede dar una pista
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Re: AYUDA URGENTE CON COMBOBOX
Hola Carlos Mora.
Este el metodo que me pides.
Saludos
Este el metodo que me pides.
Saludos
Code: Select all
//---------------------------------------------------------------------------//
METHOD LostFocus( hCtlFocus ) CLASS TGet
::Super:LostFocus( hCtlFocus )
#ifdef UTFREVN
if ::lWideChar
::Assign()
else
if ! ::lPassword
if ::oGet:buffer != GetWindowText( ::hWnd ) // right click popup action LINEA 1667
::oGet:buffer = GetWindowText( ::hWnd )
::oGet:Assign()
endif
endif
endif
#else
if ! ::lPassword
if ::oGet:buffer != GetWindowText( ::hWnd ) // right click popup action
::oGet:buffer = GetWindowText( ::hWnd )
::oGet:Assign()
endif
endif
#endif
if ! Empty( ::cPicture ) .and. ::oGet:Type == "N"
::oGet:Assign()
::oGet:Picture := ::cPicture
::oGet:UpdateBuffer()
::oGet:KillFocus()
endif
::oGet:SetFocus() // to avoid oGet:buffer be nil
if ! ::oGet:BadDate .and. ! ::lReadOnly .and. ;
( ::oGet:changed .or. ::oGet:unTransform() <> ::oGet:original )
::oGet:Assign() // for adjust numbers
// ::oGet:UpdateBuffer()
endif
if ::bColor == nil
if ::lClrFocus
if ::nOldClrPane != nil
::SetColor( ::nClrText, ::nOldClrPane )
endif
endif
else
tmp := Eval( ::bColor, Self )
::SetColor( tmp[ 1 ], tmp[ 2 ] )
endif
if ::oGet:Type == "D"
::oGet:KillFocus()
::oGet:SetFocus()
endif
::DispText()
if ! ::oGet:BadDate
::oGet:KillFocus()
else
::oGet:Pos = 1
::nPos = 1
endif
if ! Empty( ::oBtn )
::oBtn:lCancel := .F.
endif
return nil
Re: AYUDA URGENTE CON COMBOBOX
Hola Karinha
Mira te dejo este codigo para llenar el array del COMBOBOX, al seleccionar un profesional ira a Carga_paci(cCod_pro1), donde no existira el archivo del profesional y volvera al Combobox, despues das el boton Salir.
En mi caso, anule los botones con recursos y lo hice con boton normal y arroja el mismo error al no encontrar datos o la dbf para el profesional seleccionado.
Codigo:]
Mira te dejo este codigo para llenar el array del COMBOBOX, al seleccionar un profesional ira a Carga_paci(cCod_pro1), donde no existira el archivo del profesional y volvera al Combobox, despues das el boton Salir.
En mi caso, anule los botones con recursos y lo hice con boton normal y arroja el mismo error al no encontrar datos o la dbf para el profesional seleccionado.
Codigo:
Code: Select all
AADD( aProfe,{ "",""})
*/
// Do While !Eof()
// If Est_pro="S".and.Tip_esp="MEDI"
// AADD( aProfe,{ a->Cod_pro,a->Nom_pro})
// Endif
// a->(DbSkip())
// Enddo
// DbClosearea()
*/
aProfe:= {{"BUST","ARTURO BUSTIOS"},{"AREL","ARNALDO ARELLANO"},{"OLMO","JORGE OLMO"}}
// Ordenar Arreglo por Nombre
ASORT( aProfe,,, { |x,y| x[2] < y[2] } )
Re: AYUDA URGENTE CON COMBOBOX
Amigos
La tengo dificil, le he dado muchas vueltas y no logro solucionar el problema.
En la Function Carga_paci(cCod_pro1), tengo varias validaciones al no cumplirlas, emito un mensaje de aviso como el siguiente:
En cada caso, se produce el error al dar boton Salir.
Pero si no emito el mensaje de aviso, no se produce el Error, por lo que solo se produce al usar cualquier forma de aviso.
Saludos
Antonio
La tengo dificil, le he dado muchas vueltas y no logro solucionar el problema.
En la Function Carga_paci(cCod_pro1), tengo varias validaciones al no cumplirlas, emito un mensaje de aviso como el siguiente:
Code: Select all
If eof()
MsgStop("MEDICO SELECCIONADO NO TIENE PACIENTES EN ESPERA")
Return .f.
Endif
Pero si no emito el mensaje de aviso, no se produce el Error, por lo que solo se produce al usar cualquier forma de aviso.
Saludos
Antonio
Re: AYUDA URGENTE CON COMBOBOX
Amigos.
Estoy complicado, algun Amigo que se le ocurra alguna idea por donde corregir el error.
Saludos.
Antonio
Estoy complicado, algun Amigo que se le ocurra alguna idea por donde corregir el error.
Saludos.
Antonio
Re: AYUDA URGENTE CON COMBOBOX
Code: Select all
#include "FiveWin.ch"
#include "xbrowse.ch"
static oWnd
Function Consu_paci()
Local oFont1,oFont,oSay1,oFont2,oSay
Local oDlg1,oSay2
Public Fecha_hoy,total_pac:=0
Private oCod_pro1,cCod_pro1:="",nCod_pro1
Public aProfe:= {},aPacientes:={},oPaci
Sele 1
Use Profesio Shared
Dbgotop()
If Eof()
MsgStop(" NO Existen Profesionales Medicos ")
dbclosearea()
Return
Endif
AADD( aProfe,{ "",""})
Do While !Eof()
If Est_pro="S".and.Tip_esp="MEDI"
AADD( aProfe,{ a->Cod_pro,a->Nom_pro})
Endif
a->(DbSkip())
Enddo
DbClosearea()
ASORT( aProfe,,, { |x,y| x[2] < y[2] } )
Fecha_hoy:=date()
nCod_pro1=0
Define Font oFont1 Name "Curier New" Size 0,16 BOLD
Define Font oFont Name "Courier new" Size 0,22 BOLD
Define Font oFont2 Name "Courier new" Size 0,20 BOLD
DEFINE DIALOG oDlg1 RESOURCE "#1004"
REDEFINE SAY oSay ID 100 PROMPT "PACIENTES EN ATENCION DIA "+dtoc(Date()) OF oDlg1 FONT oFont COLORS RGB(12, 135, 27)
REDEFINE SAY oSay1 ID 101 PROMPT "DOCTOR" OF oDlg1 FONT oFont COLOR RGB(38, 74, 119)
REDEFINE SAY oSay2 ID 120 PROMPT "TOTAL PACIENTES: "+str(total_pac,3) OF oDlg1 FONT oFont2 COLOR rgb(39, 0, 64)
REDEFINE COMBOBOX oCod_pro1 VAR nCod_pro1 ITEMS ArrTranspose( aProfe )[ 2 ] ID 102 OF oDlg1 COLORS nRGB(9, 11, 10), nRGB(73, 250, 202);
ON CHANGE (Carga_paci(oCod_pro1,aProfe),oPaci:Refresh(),oSay2:Refresh()) //<--- Cambiar aca
REDEFINE XBROWSE oPaci ID 104 OF oDlg1 ;
COLUMNS 1,2,3,4,5,6,7;
HEADERS "Nro. ","Nombre del Paciente" ,"Folio Caja","T. Pago","Valor ","Digita","Hr. Digi";
COLSIZES 40, 350, 80, 80,70,80,80 ;
FONT oFont1;
ARRAY aPacientes ;
FOOTERS LINES CELL
oPaci:bClrStd := {|| { nRGB( 0, 0, 0), nRGB(255,248,220) } }
oPaci:bClrSelFocus := {|| { nRGB( 0, 0, 0), nRGB(137, 247, 33) } }
oPaci:bClrHeader := {|| { CLR_BLUE, nRGB( 245, 245, 245 ) } }
oPaci:bClrSel := {|| { nRGB(000,000,000), nRGB(128,255,128) } }
oPaci:bClrSelFocus := {|| { nRGB( 0, 0, 0), nRGB(128,255,128) } }
oPaci:bClrStd := {|| { nRGB(000,000,000), nRGB(255,255,200) } }
oPaci:nStretchCol := STRETCHCOL_WIDEST
oCol := oPaci:AddCol()
oCol:AddResource("#8006")
oCol:AddResource("#8007")
oCol:cHeader = "Estado"
oCol:bBmpData := { || if(aPacientes[oPaci:nArrayAt,8]=="S",1,2)}
REDEFINE BTNBMP ID 103 Resource "#8005" OF oDlg1 ; <--------- Boton Para actualiza Array desde la Dbf Actualizada
ACTION (Carga_paci(cCod_pro1))
REDEFINE BTNBMP ID 105 Resource "#8004" OF oDlg1 ; <--------- Boton salir del programa y volver al menu
ACTION (Cierra(),oDlg1:END())
ACTIVATE DIALOG oDlg1 CENTERED
Return Nil
Static Function Carga_paci(oCod_pro1,aProfe) // <--- Cambiar aca
LOCAL cCod_Pro1 := aProfe [1,oCod_pro1:nAt] // <--- Cambiar aca
asize( aPacientes, 0 )
If Len(cCod_pro1)=0
MsgStop("No ha Seleccionado Profesional Medico")
Return .f.
Endif
carchi:='PACI'+trim(cCod_pro1)
If !file('&carchi..dbf')
MsgStop("MEDICO SELECCIONADO NO TIENE INGRESOS DE PACIENTES")
Return .f.
Endif
Sele 2
Use &carchi Shared
If !file('&carchi..ntx')
Inde on Cod_pro+dtos(ctod(fec_ate))+Str(Cor_pac,4) to &carchi
Endif
Set Inde to &carchi
//seek cCod_pro1+dtos(date())
DbGotop()
If eof()
MsgStop("MEDICO SELECCIONADO NO TIENE PACIENTES EN ESPERA")
DbClosearea()
Return .f.
Endif
Stor 0 to total_pac
Do While !Eof()
// If (ctod(fec_ate)=Fecha_hoy)
AADD( aPacientes,{ b->Cor_pac,b->Nom_pac,b->Fol_caj,b->Tip_pag,b->Val_bon,b->Cod_dig,b->Hor_dig,b->Con_pac})
total_pac=total_pac+1
// Endif
DbSkip()
Enddo
DbClosearea()
oPaci:SetArray( aPacientes )
oPaci:GoTop()
oPaci:Refresh()
Return oPaci
Static FUNCTION Cierra()
Set relation to
Clos data
sysrefresh()
return nil
Re: AYUDA URGENTE CON COMBOBOX
Hola Cesar.
Hice la prueba, pero tengo el problema que los datos no llegan a la Function "CARGA_PACI():
REDEFINE COMBOBOX oCod_pro1 VAR nCod_pro1 ITEMS ArrTranspose( aProfe )[ 2 ] ID 102 OF oDlg COLORS nRGB(9, 11, 10), nRGB(73, 250, 202);
ON CHANGE (Carga_paci(oCod_pro1,aProfe),oPaci:Refresh(),oSay2:Refresh()) //<--- Cambiar aca
Static Function Carga_paci(oCod_pro1,aProfe) // <--- Cambiar aca
LOCAL cCod_Pro1 := aProfe [1,oCod_pro1:nAt] // <--- Cambiar aca <------ Linea 89
?cCod_pro1 <------- cCod_pro1 no tiene dato.
Saludos.
Antonio
Detallle de Error:
Hice la prueba, pero tengo el problema que los datos no llegan a la Function "CARGA_PACI():
REDEFINE COMBOBOX oCod_pro1 VAR nCod_pro1 ITEMS ArrTranspose( aProfe )[ 2 ] ID 102 OF oDlg COLORS nRGB(9, 11, 10), nRGB(73, 250, 202);
ON CHANGE (Carga_paci(oCod_pro1,aProfe),oPaci:Refresh(),oSay2:Refresh()) //<--- Cambiar aca
Static Function Carga_paci(oCod_pro1,aProfe) // <--- Cambiar aca
LOCAL cCod_Pro1 := aProfe [1,oCod_pro1:nAt] // <--- Cambiar aca <------ Linea 89
?cCod_pro1 <------- cCod_pro1 no tiene dato.
Saludos.
Antonio
Detallle de Error:
Code: Select all
Time from start: 0 hours 0 mins 8 secs
Error occurred at: 21/11/2018, 11:48:05
Error description: Error BASE/1132 Bound error: array access
Args:
[ 1] = A { ... } length: 2
[ 2] = N 3
Stack Calls
===========
Called from: .\Consulta.PRG => CARGA_PACI( 89 )
Called from: .\Consulta.PRG => (b)CONSU_PACI( 47 )
Called from: .\source\classes\COMBOBOX.PRG => TCOMBOBOX:CHANGE( 482 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1702 )
Called from: .\source\classes\COMBOBOX.PRG => TCOMBOBOX:HANDLEEVENT( 820 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3544 )
Called from: => SENDMESSAGE( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:COMMAND( 427 )
Called from: => TWINDOW:HANDLEEVENT( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT( 916 )
Called from: => DIALOGBOX( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 289 )
Called from: .\Consulta.PRG => CONSU_PACI( 83 )
Called from: .\MenuCon.PRG => (b)MAIN( 46 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 638 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 872 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1723 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 1705 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3544 )
Called from: => WINRUN( 0 )
Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE( 1062 )
Called from: .\MenuCon.PRG => MAIN( 58 )
Re: AYUDA URGENTE CON COMBOBOX
Hola Cesar
Extraño por decir lo menos.
Agregue Arrtranspose y obtengo el cCod_pro1, pero al emitir el MsgStop se cae.
Creo que si esto tiene esta limitacion a estas alturas, nada que hacer.
Simplemente no entiendo nada.
Saludos
Antonio.
Extraño por decir lo menos.
Agregue Arrtranspose y obtengo el cCod_pro1, pero al emitir el MsgStop se cae.
Creo que si esto tiene esta limitacion a estas alturas, nada que hacer.
Simplemente no entiendo nada.
Saludos
Antonio.
Code: Select all
Static Function Carga_paci(oCod_pro1,aProfe) // <--- Cambiar aca
LOCAL cCod_Pro1 := ArrTranspose( aProfe )[ 1 ][oCod_pro1:nAt] // <--- Cambiar aca
?cCod_pro1
aPacentes := {}
asize( aPacientes, 0 )
carchi:='PACI'+trim(cCod_pro1)
If !file('&carchi..dbf')
MsgStop("MEDICO SELECCIONADO NO TIENE INGRESOS DE PACIENTES") <==== Aqui se cae el prog.
Return nil
Endif