xBrowse - SetCheck() (SOLUCIONADO)

xBrowse - SetCheck() (SOLUCIONADO)

Postby MarioG » Fri Jun 28, 2013 2:06 am

Estimados;
Tengo el siguiente xBrowse donde muestro en la columna última un ícono segun se cumpla una condición, y se ve así:
Image
Como se ve, en la cabecera, dice: "Para Facturar" (salida por impresora). Entonces, luego de este proceso pretendo que el SetCheck adopte esta visual:
Image
Quizas las imágenes son un poco reducidas (al menos en la vista previa).
Espero se entienda la idea... se puede?, como?

desde ya muchas gracias
Last edited by MarioG on Tue Jul 16, 2013 3:03 pm, edited 1 time in total.
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - SetCheck()

Postby MarioG » Fri Jun 28, 2013 3:07 am

repito las imágenes:
Image
Image
agrego:
Lo intenté así (sin exito):
Code: Select all  Expand view
  WITH OBJECT ::oBrwCab:FCabFa14
      :cHeader:= "Para"+CRLF+"Facturar"
      :nHeadStrAlign:= :nDataStrAlign:= AL_CENTER
      :nHeadStrAlign:= :nDataBmpAlign:= AL_CENTER
      :SetCheck( { if( (h0["CabFacVta"]:cAlias)->FCabFa14 .and. !(h0["CabFacVta"]:cAlias)->FCabFa15, "bmp_Listo", ;
                   if( (h0["CabFacVta"]:cAlias)->FCabFa14 .and.  (h0["CabFacVta"]:cAlias)->FCabFa15, "bmp_PrntOk", "")), "" }, EDIT_GET )
         END

Para manejar tal condición dispongo de dos campos lógicos: Para Facturar, (h0["CabFacVta"]:cAlias)->FCabFa14, y Facturado (h0["CabFacVta"]:cAlias)->FCabFa15
Por ahora, una vez dada la condición de Facturado, estoy colorizando la fila.
Y para hacerlo mas difícil, en esta última condición, ya no se debería poder revertir al hacer doble click en el campo

nuevamente, gracias
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - SetCheck()

Postby nageswaragunupudi » Mon Jul 01, 2013 7:15 am

Code: Select all  Expand view
WITH OBJECT ::oBrwCab:FCabFa14
   :cHeader    := "Para"+CRLF+"Facturar"
   :nHeadStrAlign := :nDataStrAlign:= AL_CENTER
   :nHeadStrAlign := :nDataBmpAlign:= AL_CENTER
   //
   :bEditValie := { || If( (h0["CabFacVta"]:cAlias)->FCabFa14 .and. !(h0["CabFacVta"]:cAlias)->FCabFa15, .t., ;
                       If( (h0["CabFacVta"]:cAlias)->FCabFa14 .and.  (h0["CabFacVta"]:cAlias)->FCabFa15, .f., ;
                       nil ) ) }

   :SetCheck( { "bmp_Listo", "bmp_PrntOk" }, .t. )
END
 
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10248
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: xBrowse - SetCheck()

Postby MarioG » Mon Jul 01, 2013 1:24 pm

Mr. Rao
many thanks!; but now, i can't do dobleclic :cry:
The first time, I doubleclick to show "ready to print" status. In the second time, i pretend show the other icon.
But I think that not the object of SetCheck().
I'll use a diferent color for this line

sorry for my english
Regards
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - SetCheck()

Postby MarioG » Sun Jul 07, 2013 12:23 am

Estimados;
Vuelvo sobre este tema a ver si alguien me puede ayudar.
Explico lo que pretendo hacer:
Tengo, en un xBrowse, una lista de (a la que llamo) cabeceras de facturas. O sea, alguien en Administración prepara un pedido para Facturar.
En Depósito ese Pedido se prepara. Una vez preparado, se hace doble clic en la columna "Para Facturar" mostrando el icono respectivo.
Finalmente en Administración se lo Factura. Luego de facturado, el SetCheck() se pone en .f. (no muestra nada) y la fila se pinta de un color distinto del resto (gris) para indicar que ya esta facturado.
Ahora bien, la incongruencia es que si, en este último estado, hago nuevamente dobleclic, el SetCheck(), obviamente, devuelve verdadero y muestra el icono.
Como hago para controlar, para que antes de ejecutar SetCheck(), me Alerte o no, sobre la condición de la fila
Tengo dos campos lógicos: Campo1 (FCabFa14), "Para Facturar" y Campo2 (FCabFa15), "Facturado"

O si hay otra opción, bienvenida!
muchas gracias
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - SetCheck()

Postby joseluisysturiz » Sun Jul 07, 2013 4:39 pm

Creo que tu solucion esta en el methodo on dobleclick de columna, yo hago algo parecido, si esta tildado(check) o no, dependiendo tambien de otra condicion en una VAR, permito que se haga el cambio o switcheo en el check, no se si eso te da una idea de que hacer o te deja igual o peor que antes, 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

Re: xBrowse - SetCheck()

Postby MarioG » Thu Jul 11, 2013 11:27 pm

José, gracias por responder
Podría poner el código de como lo haces?
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - SetCheck()

Postby joseluisysturiz » Fri Jul 12, 2013 2:20 am

Disculpa la tardanza, andaba un pòco ful, haber si esto te ayuda o da una idea sobre lo que quieres hacer, nose si habra una manera mas facil, pero a mi me funciona a la perfeccion para lo que necesito, esto es con MYSQL, saludos... :shock:

EN EL xBROWSE uso una VAR que controla el setcheck y en la funcion act_check() hago el cambio dependiendo de lo que quiera o valide, por lo menos si el cliente ya esta adjudicado, y tratan de volverlo adjudicar en el mismo momento, el sistema advierte y no lo permite, aunque tengo varias condiciones en mis validaciones...

// ACT./DES. STATUS SELECCIONADO PARA ADJUDICAR CON D-CLICK
:bLDblClick := {|nRow|IIF( oQryADJ:adj_adjudicar = 0 ,;
( oQryADJ:adj_adjudicar := 1 ) ,;
( oQryADJ:adj_adjudicar := 0 ) ) ,;
act_check( oQryAdj ) ,;
oQryADJ:REFRESH(), oBrw:REFRESH() }

// ACT./DES. STATUS SELECCIONADO PARA ADJUDICAR CON SPACE
:bKeyDown= {|nKey| IF ( nKey == VK_SPACE ,;
IIF( oQryADJ:adj_adjudicar = 0 ,;
( oQryADJ:adj_adjudicar := 1 ) ,;
( oQryADJ:adj_adjudicar := 0 ) ), ) }


PROCEDURE act_check( oQryAdj ) // ACTUALIZA CHECK PARA adjudicar

LOCAL cSql, oError

oQryAdj:REFRESH()

cSql := "UPDATE cronograma SET "
cSql += "adj_adjudicar=" + ClipValue2SQL( IF( oQryAdj:adj_adjudicar == 0, 1, 0 ) )
cSql += " WHERE adj_insc = '" + ClipValue2SQL( oQryAdj:adj_insc ) + "' "

TRY
oDatos:oConex:Execute( cSql )

CATCH oError
MSGALERT( oError:Description + CRLF + ;
"Error Grabando en Tabla (cronograma), Sentencia" + CRLF + CRLF + ;
cSql, oDatos:cTitMsg )
END

RETURN
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

Re: xBrowse - SetCheck()

Postby MarioG » Sat Jul 13, 2013 8:28 pm

José Luis;
gracias por responder, es lo que necesito.
Aunque no "veo", como afecta a la columna en la que tengo definido el SetCheck().
Entiendo lo que hacen bLDblclick y bKeyDown, pero no entiendo como afectan a la columna con el Setcheck

gracias
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - SetCheck()

Postby joseluisysturiz » Sun Jul 14, 2013 12:32 am

MarioG wrote:José Luis;
gracias por responder, es lo que necesito.
Aunque no "veo", como afecta a la columna en la que tengo definido el SetCheck().
Entiendo lo que hacen bLDblclick y bKeyDown, pero no entiendo como afectan a la columna con el Setcheck

gracias


Mario, como es bLDblclick aplica sobre la fila, afectando automaticamente sobre la columna que tenga SetCheck(), te mando una imagen para que veas lo que te digo, la columna ADJ es la que usa el SetCheck, saludos... :shock:

Image

Uploaded with ImageShack.us
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

Re: xBrowse - SetCheck()

Postby Antonio Linares » Mon Jul 15, 2013 10:58 am

Jose Luis,

Se ve muy bien, enhorabuena :-)

como haces para definir los dias para cada persona ? Desde una caja de diálogo ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41314
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: xBrowse - SetCheck()

Postby joseluisysturiz » Mon Jul 15, 2013 1:54 pm

Antonio Linares wrote:Jose Luis,

Se ve muy bien, enhorabuena :-)

como haces para definir los dias para cada persona ? Desde una caja de diálogo ?


Muchas gracias Antonio, ese cronograma es un xbrowse de solo lectura que se alimenta de una tabla que contiene el cronograma de pago individual con varias informaciones sobre el pago y son mensuales, esto se procesa en un sistema de facturacion de forma automatica sin introducir datos, solo la cantidad de cuotas mensuales a pagar, previamente determinado en un contrato, aca una vista de la facturacion, saludos... :shock:

Image

Uploaded with ImageShack.us
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

Re: xBrowse - SetCheck()

Postby MarioG » Tue Jul 16, 2013 3:03 pm

Estimados;
gracias a Rao y José Luis por sus respuestas.
Finalmente, y eso es lo bueno de cuando no nos "sirven la respuesta en bandeja", solucioné de la manera que me deja satisfecho. Por lo que obviamente supongo que habrá, otras mejores soluciones.
Para solucionar lo planteado, que consiste, en representar en una columna 3 estados, a traves de 2 campos lógicos, quise acudir a SetCheck(), pero como obviamente, SetCheck(), esta diseñado para presentar 2 posibles estados, la cosa se puso muuuuy dificl (o mejor dicho "tercamente" dificil).
La solución, en código, fue la siguiente:
Code: Select all  Expand view
  WITH OBJECT ::oBrwCab:aCols[8]
      :cHeader:= "Estado"
      :nHeadStrAlign:= AL_CENTER
      :nDataBmpAlign:= AL_LEFT
      :nDataStrAlign:= AL_RIGHT
      :SetCheck( { "bmp_Listo", "" }, {|o,v| h0["CabFacVta"]:Load(), ;
                                             if( !h0["CabFacVta"]:FCabFa14 .and. !h0["CabFacVta"]:FCabFa15, ;
                                                 ( h0["CabFacVta"]:FCabFa14:= v, h0["CabFacVta"]:Save() ), ;
                                             if( h0["CabFacVta"]:FCabFa14 .and. !h0["CabFacVta"]:FCabFa15, ;
                                                 ( h0["CabFacVta"]:FCabFa14:= v, h0["CabFacVta"]:Save() ), ;
                                             if( h0["CabFacVta"]:FCabFa14 .and. h0["CabFacVta"]:FCabFa15, ;
                                                 ( if( MsgNoYes( "Este Documento ya fue Facturado"+CRLF+"Desea visualizarlo/re imprimirlo?", "Atención!" ), ;
                                                       ::SetCab2Print( FALSE ), ), .f. ), nil ))) } )
      :bStrData:= {|| h0["CabFacVta"]:Load(), ;
                      if( !h0["CabFacVta"]:FCabFa14 .and. !h0["CabFacVta"]:FCabFa15, ;
                          ( "P/Preparar" ), ;
                      if( h0["CabFacVta"]:FCabFa14 .and. !h0["CabFacVta"]:FCabFa15, ;
                          ( "P/Facturar" ), ;
                      if( h0["CabFacVta"]:FCabFa14 .and. h0["CabFacVta"]:FCabFa15, ;
                          ( "FACTURADO"  ), nil ))) }

      :bClrStd := {|| {if( !h0["CabFacVta"]:FCabFa14 .and. !h0["CabFacVta"]:FCabFa15, ;
                           CLR_BLACK, ;
                       if( h0["CabFacVta"]:FCabFa14 .and. !h0["CabFacVta"]:FCabFa15, ;
                           CLR_HBLUE, ;
                       if( h0["CabFacVta"]:FCabFa14 .and. h0["CabFacVta"]:FCabFa15, ;
                           CLR_HRED, CLR_BLACK ))), CLR_BACKBLUE2} }
   END
 

Entonces esto queda así (segun la asignación .T. o .F. de los dos campos que involucran el analisis)
En el estado de que solo esta preparado un pedido la columna "Estado" muestra "P/Preparar", en color estandar.
Pasado este estado el operador hace doble clic y se muestra el ícono y el texto cambia a "P/Facturar", en color azul fuerte.
Una vez emitido, se mantiene el ícono y el texto cambia a FACTURADO y en color rojo fuerte.
Image
En el estado FACTURADO. Si el operador hace dobleclic; entonces emerge un alerta opcional de si quiere previsualizar y/o re imprimir el documento.

José Luis:
Si observás el SetCheck(), el segundo parámetro también puede ser un codeblock (no lo sabia y lo encontré en uno de los samples de xBrowse). De manera que con este CB prescindí del uso de :bLDblClick

Saludos
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: xBrowse - SetCheck() (SOLUCIONADO)

Postby joseluisysturiz » Wed Jul 17, 2013 12:59 am

Mario que bueno resolvistes, es la idea del foro, reza un dicho...NO LES DES PESCADO, ENSEÑALOS A PESCAR, y asi es que aprendemos cada dia mas, esta muy buena tu solucion planteada y lo del setcheck lo habia visto en el foro, pero como ya tenia esto hecho, lo deje asi, igual gracias por el detalle, seguimos a la orden hasta que Dios quiera, 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 90 guests