Buenas tardes compa帽eros del foro, les pido su ayuda para resolver un problema bastante extra帽o, tengo un dialogo desde recursos, en el dialogo un Xbrowse y una serie de botones, al pulsar uno de ellos me debe desplegar una ventana con una serie de datos relacionados a la celda de la que estoy ejecutando, todo parece funcionar bien, a excepci贸n de que cuando pulso el bot贸n y me despliega la informaci贸n correspondiente, despues cierro la ventana y vuelvo a pulsar el bot贸n este no responde, es como si al llamar la funci贸n que ejecuta este bot贸n no le devolviera el foco al bot贸n desde donde fue llamada, pero otros botones que existen en el mismo dialogo si funcionan.
Espero haberme explicado correctamente y ver si existe alguna soluci贸n para este peculiar comportamiento.
Uso FW16.04+Harbour+BCC7+xDevStudio0.72
Aqui parte del c贸sigo que estoy ejecutando:
Y aqui la funci贸n que es llamada al pulsar el bot贸n "Detalles":
Espero haberme explicado correctamente y ver si existe alguna soluci贸n para este peculiar comportamiento.
Uso FW16.04+Harbour+BCC7+xDevStudio0.72
Aqui parte del c贸sigo que estoy ejecutando:
Function revi_inci
聽 聽 public oDlgins
聽 聽 close all
聽 聽 use &dbtmp1 alias nomina
聽 聽 DbGotop()
聽 聽
聽 聽 define font oFont1 聽name "TIMES NEW ROMAN" size 0,-14 bold
聽 聽 DEFINE DIALOG oDlgins resource "dlgverdb5" of oVentprinc title "Incidencias para nomina semanal" icon "icono1" font oFont1g
聽 聽 cLeye1:=" 聽 聽 Incidencias correspondientes al periodo del: "+cIpr+" al: "+cFpr+" de la sucursal "+alltrim(locncode)
聽 聽 redefine say prompt cLeye1 ID 1 of oDlgins font oFont1
聽 聽
聽 聽 oBrw := TXBrowse():New( oDlgins )
聽 聽oBrw:nMarqueeStyle := MARQSTYLE_HIGHLCELL //seleccion por celda
聽 聽 oBrw:nColDividerStyle := LINESTYLE_INSET
聽 聽 oBrw:nRowDividerStyle := LINESTYLE_INSET
聽 聽 oBrw:lColDividerComplete := .t. //completa pintado hasta el footer cuando lineas no llenan todo el browse
聽 聽oBrw:nHeaderHeight := 44 //Altura cabeceras de col
聽 聽 oBrw:lRecordSelector := .t. //poner o no, COL de la flechita de la izq
聽 聽oBrw:nHeaderLines := 3
聽 聽 oBrw:bClrHeader := {|| { nRGB(152, 251, 152), nRGB(47, 79, 79) } }//{|| { nRGB(140, 0, 0), nRGB(229,0,0) } } // VERDECITO
聽 聽 oBrw:bClrFooter := oBrw:bClrHeader
聽 聽 oBrw:bClrStd := {|| { nRGB( 0, 0, 0), nRGB(255,248,220) } } // colores para lineas normales
聽 聽 oBrw:bClrSel := {|| { nRGB( 0, 0,255), nRGB(241,222,088) } } // para barra de linea selecc cuando el control no tiene el foco
聽 聽 oBrw:bClrSelFocus := {|| { nRGB( 0, 0, 0), nRGB(248,195, 34) } } // para barra de linea selecc cuando el control tiene el foco
聽 聽 oBrw:nRowHeight := 19
聽 聽 oBrw:lFastEdit := .T.
聽 聽 聽 聽
聽 聽 oCol = oBrw:AddCol()
聽 聽 oCol:bStrData = { || nomina->sucursal }
聽 聽 oCol:nDataStrAlign := 0
聽 聽 oCol:nHeadStrAlign := AL_LEFT
聽 聽 oCol:cHeader = "Sucursal"
聽 聽 oCol:nWidth = 60
聽 聽 oCol:oHeaderFont := oFont1
聽 聽 oCol:bClrHeader := { || { 聽color_1(),65535 } }
聽 聽 oCol:oHeaderFont := oFont1
聽 聽 聽 聽
*****Defino todas las columnas del xBrowse........
聽 聽 聽 聽
聽 聽 oBrw:SetRDD()
聽 聽 聽 聽
聽 聽 oBrw:Sucursal:lMergeVert 聽 := .t.
聽 聽 oBrw:CreatefromResource(3)
聽 聽 lSalpag:=.F.
聽 聽 redefine button oBtn1cs ID 10 of oDlgins prompt "Salvar" action(oDlgins:end())
聽 聽redefine button oBtn2cs ID 11 of oDlgins prompt "Procesar" action(oDlgins:end())
聽 聽 redefine button oBtn3cs ID 12 of oDlgins prompt "Integrar" action(oDlgins:end)
聽 聽 redefine button oBtn4cs ID 13 of oDlgins prompt "Detalles" action(deta_inci(),oDlgins:refresh())
聽 聽 redefine button oBtn5cs ID 14 of oDlgins prompt "&Salvar resumen" action(oDlgins:end(),salvainsc())
聽 聽 redefine button oBtn6cs ID 15 of oDlgins prompt "&Cancelar" action(oDlgins:end())
聽 聽 activate dialog oDlgins center on init (obtn1cs:hide(),oBtn2cs:hide(),oBtn3cs:hide(),oBtn3cs:hide())
聽 聽 oFont1:end()
returnY aqui la funci贸n que es llamada al pulsar el bot贸n "Detalles":
Function deta_inci
聽 聽 nColu:=oBrw:nColSel()
聽 聽 cNonodi:=alltrim(str(no_nomina))
聽 聽 if nColu=5 .or. nColu=6 .or. nColu=7 .or. nColu=8
聽 聽 聽 聽 do case
聽 聽 聽 聽 case nColu=5
聽 聽 聽 聽 聽 聽 cCadsql1di:="Select fechaincide,observaciones from &tInci_dia where no_nomina='&cNonodi' and incapacidad="+;
聽 聽 聽 聽 聽 聽 "'1' and fechaincide between '&cIpr' and '&cFpr'"
聽 聽 聽 聽 case nColu=6
聽 聽 聽 聽 聽 聽 cCadsql1di:="Select fechaincide,observaciones from &tInci_dia where no_nomina='&cNonodi' and vacaciones="+;
聽 聽 聽 聽 聽 聽 "'1' and fechaincide between '&cIpr' and '&cFpr'"
聽 聽 聽 聽 case nColu=7
聽 聽 聽 聽 聽 聽 cCadsql1di:="Select fechaincide,observaciones from &tInci_dia where no_nomina='&cNonodi' and permiso="+;
聽 聽 聽 聽 聽 聽 "'1' and fechaincide between '&cIpr' and '&cFpr'"
聽 聽 聽 聽 case nColu=8
聽 聽 聽 聽 聽 聽 cCadsql1di:="Select fechaincide,observaciones from &tInci_dia where no_nomina='&cNonodi' and falta="+;
聽 聽 聽 聽 聽 聽 "'1' and fechaincide between '&cIpr' and '&cFpr'"
聽 聽 聽 聽 endcase
聽 聽 聽 聽 oRs1di := TOleAuto():New( "ADODB.Recordset" )
聽 聽 聽 聽 oRs1di:CursorType := 1 // opendkeyset
聽 聽 聽 聽 oRs1di:CursorLocation := 3 // local cache
聽 聽 聽 聽 oRs1di:LockType := 3 // lockoportunistic
聽 聽 聽 聽 *msgget("A","B",@cCadsql1di)
聽 聽 聽 聽 *Comando SQL para consultar clientes en GP
聽 聽 聽 聽 TRY
聽 聽 聽 聽 聽 聽 cursorwait()
聽 聽 聽 聽 聽 聽 oRS1di:Open( cCadsql1di,'Provider='+xPROVIDER+';Data Source='+xSOURCE+';Initial Catalog='+xCATALOGA+';User Id='+xUSERID+';Password='+xPASSWORD )
聽 聽 聽 聽 聽 聽 CATCH oErr
聽 聽 聽 聽 聽 聽 聽 聽 MsgInfo( "Error al generar el recordset de detalle de incidencia" )
聽 聽 聽 聽 聽 聽 聽 聽 msgget("A","B",@cCadsql1di)
聽 聽 聽 聽 聽 聽 RETURN(.F.)
聽 聽 聽 聽 END TRY
聽 聽 聽 聽 oRs1dinr := oRs1di:RecordCount()
聽 聽 聽 聽 if oRs1dinr>0
聽 聽 聽 聽 聽 聽 aDatos:={}
聽 聽 聽 聽聽oRs1di:MoveFirst()
聽 聽 聽 聽聽for unregdi:=1 to oRs1dinr
聽 聽 聽 聽 聽 聽 聽 聽 aadd(aDatos,dtoc(oRs1di:Fields(0):Value))
聽 聽聽聽 聽 聽 聽 oRs1di:MoveNext()
聽 聽 聽 聽 聽 聽 next
聽 聽 聽 聽 聽 聽 oRs1di:MoveFirst()
聽 聽 聽 聽 聽 聽 aadd(aDatos,oRs1di:Fields(1):Value)
聽 聽 聽 聽 聽 聽 DEFINE DIALOG oDlg FROM 2, 2 TO 250,450 TITLE "Detalle incidencia" PIXEL of oDlgins
聽 聽聽聽 聽 @ 0, 2 SAY " Informaci贸n de la incidencia " 聽OF oDlg
聽 聽 聽 聽聽@ 1, 2 XBROWSE oBrw OF oDlg 聽SIZE 200,85 ;
聽 聽 聽 聽 聽AUTOCOLS ;
聽 聽 聽 聽 聽HEADERS "Detalle" ;
聽 聽 聽 聽 聽SIZES 350 ;
聽 聽 聽 聽 聽ARRAY aDatos ;
聽 聽 聽 聽 聽FOOTERS LINES CELL
聽 聽 聽 聽 聽 聽oBrw:CreateFromCode()
聽 聽 聽 聽 聽 聽 @ 105,165 BUTTON "&Salir" 聽OF oDlg ACTION oDlg:End() pixel
聽 聽聽聽 聽 ACTIVATE DIALOG oDlg CENTERED
聽 聽聽聽 聽 oRs1di:close()
聽 聽聽聽 聽 oDlgins:refresh()
聽 聽聽聽 聽 Sysrefresh()
聽聽 聽聽 聽 endif
聽 聽 endif
return(NIL)