FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour xBrowse - SetCheck() (SOLUCIONADO)
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
xBrowse - SetCheck() (SOLUCIONADO)
Posted: Fri Jun 28, 2013 02: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í:

Como se ve, en la cabecera, dice: "Para Facturar" (salida por impresora). Entonces, luego de este proceso pretendo que el SetCheck adopte esta visual:

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
Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: xBrowse - SetCheck()
Posted: Fri Jun 28, 2013 03:07 AM
repito las imágenes:


agrego:
Lo intenté así (sin exito):
Code (fw): Select all Collapse
   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
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: xBrowse - SetCheck()
Posted: Mon Jul 01, 2013 07:15 AM
Code (fw): Select all Collapse
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
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: xBrowse - SetCheck()
Posted: Mon Jul 01, 2013 01: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
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: xBrowse - SetCheck()
Posted: 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
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: xBrowse - SetCheck()
Posted: Sun Jul 07, 2013 04: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!
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: xBrowse - SetCheck()
Posted: 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
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: xBrowse - SetCheck()
Posted: Fri Jul 12, 2013 02: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!
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: xBrowse - SetCheck()
Posted: Sat Jul 13, 2013 08: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
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: xBrowse - SetCheck()
Posted: 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... :-)



Uploaded with ImageShack.us
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: xBrowse - SetCheck()
Posted: 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
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: xBrowse - SetCheck()
Posted: Mon Jul 15, 2013 01: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... :-)



Uploaded with ImageShack.us
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: xBrowse - SetCheck()
Posted: Tue Jul 16, 2013 03: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 (fw): Select all Collapse
   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.

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
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: xBrowse - SetCheck() (SOLUCIONADO)
Posted: 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!

Continue the discussion