In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Avanzando con TBrowseMod

Foro público de Xailer en español
cfuentes
Mensajes: 30
Registrado: Mié May 13, 2020 6:45 pm

Avanzando con TBrowseMod

Mensaje por cfuentes »

Buenos días estimados colegas, estamos dando los primeros pasos con el TBrowseMod, con Xailer 7 Enterprise.

Ya logro poner en la primera columna de mi grid una columna con una imagen de Cotejo o Blanco, pero ahora quiero lograr ejecutar un evento cuando pulso clic sobre una linea del grid.

Con el TBrowse lo hacia fácilmente con las siguientes líneas, pero con TBrowseMod, le he dado muchisimas vueltas y no he podido:

LOCAL nPos := ::oCatalogAcc:nArrayAt

// Si pulsamos click en la primera columna del grid se pone o se quita el cotejo (donde esta el checkbox)
WITH OBJECT ::oCatalogAcc
:aArrayData[nPos,1] := !(:aArrayData[nPos,1]) // Swicht del cotejo
:RefreshCurrent()
END

Gracias anticipadas

Carlos Fuentes
Avatar de Usuario
MarceloAR
Mensajes: 24
Registrado: Dom Dic 01, 2019 2:38 pm
Ubicación: Argentina
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por MarceloAR »

Hola Carlos buenos días, hace días que vengo con esta cuestión, ayer junto con otros colegas llegamos a lo siguiente:

Código: Seleccionar todo

//------------------------------------------------------------------------------

METHOD BrwTurnosClick( oSender ) CLASS TFormPrincipal

   ::oBrwTurnos:oDataGrid:OnSelect := {|x,y| ::Selected( x, ::oBrwTurnos:nIndex, ::oBrwTurnos:nSelectCol ) }

RETURN Nil

//------------------------------------------------------------------------------

METHOD Selected( oSender, nIndex, nCol ) CLASS TFormPrincipal
   local cSql, nIdCliente:=0
                                                            // aqui escribes tu metodo
   IF nCol == 2
      with object TFrmClienteBuscarSeleccionar():New()
         :ShowModal()
         nIdCliente  := :nId
      end with
      cSql := "UPDATE turnos SET id_cliente=" + ValToSql(nIdCliente) + ","
      cSql +=                   "fecha_quese_dio=" + ValToSql(Date()) + " "
      cSql += "WHERE id_turno=" + ValToSql(::oSqlTurnos:id_turno)
      AppData:cnnMysql:Execute(cSql)
      ::oSqlTurnos:Refresh()
      ::oBrwTurnos:Refresh()
   ENDIF

RETURN Nil

//------------------------------------------------------------------------------
No se si es la forma correcta, pero así anda.
Saludos desde Argentina
Marcelo Roggeri
Argentina
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ignacio »

Hola,

Se han modificado los eventos OnClick y OnDblClick para que reciban los siguientes parámetros:

Código: Seleccionar todo

 EVENT OnClick( oSender, nKeys, nRow, nCol )
   EVENT OnDblClick( oSender, nKeys, nRow, nCol )
nRow se corresponde con el número de fila seleccionada
nCol se corresponde con el número de columna seleccionada

Además se ha incluido el evento:

Código: Seleccionar todo

EVENT OnChange( oSender, lRowChanged )
Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
cfuentes
Mensajes: 30
Registrado: Mié May 13, 2020 6:45 pm

Re: Avanzando con TBrowseMod

Mensaje por cfuentes »

Marcelo, gracias por tu pronta respuesta, funciona a la perfección.

Las gracias a Ignacio y ya estaremos atentos al cambio.

Un abrazo a ambos.

Carlos Fuentes
Avatar de Usuario
xhermita
Mensajes: 177
Registrado: Vie Feb 18, 2011 10:05 pm
Ubicación: Las Palmas de Gran Canaria
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por xhermita »

ignacio escribió:Hola,

Se han modificado los eventos OnClick y OnDblClick para que reciban los siguientes parámetros:

Código: Seleccionar todo

 EVENT OnClick( oSender, nKeys, nRow, nCol )
   EVENT OnDblClick( oSender, nKeys, nRow, nCol )
nRow se corresponde con el número de fila seleccionada
nCol se corresponde con el número de columna seleccionada

Además se ha incluido el evento:

Código: Seleccionar todo

EVENT OnChange( oSender, lRowChanged )
Saludos
¿No seria más interesante de esta manera?

Código: Seleccionar todo

 EVENT OnClick( oSender, nKeys, oCol, nIndex  )
   EVENT OnDblClick( oSender, nKeys, oCol, nIndex  )
Para mantener la homogeneidad con el resto de eventos del TBrowseMod y porque no se que pasaria si el usuario mueve las columnas con nCol.
Pedro Amaro
2PC Service

Xailer / Néfele / MySQL-MariaDB / SQLServer
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ignacio »

Hola,

Tiene sentido. Lo corrijo.

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ramonzea
Mensajes: 130
Registrado: Mar Sep 15, 2015 6:42 am
Ubicación: México
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ramonzea »

Estoy usando un TbwoseMod, y hago en la edición de las columnas cambiándolas de lugar, pero al grabar y compilar siguen quedando en el orden original.
Ejemplo, agrego nueva columna que toma la posición 7, y la muevo a la posición 1; compilo y ejecuto y se muestra la nueva columna en la posición 7 y no en la 1.

Espero haberme explicado.

Saludos.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ignacio »

Buenos días,

Visto y corregido. Gracias por comunicarlo. Mientras se publica una nueva versión de Xailer puede hacer lo siguiente (y así de paso utiliza una nueva opción de Xailer 7):

1) Abra el formulario
2) Haga click botón derecho en el caption del formulario
3) Seleccione la opción de menú contextual: 'Editar como texto'
4) Diríjase hasta la línea que pone: WITH OBJECT .... := TBrowseMod():New( Self )
5) Un poco más abajo verá la definición de las columnas. Simplemente cambie el orden de creación
6) Guarde el fichero y ciérrelo
7) Vuelva a abrir el formulario

Un saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ramonzea
Mensajes: 130
Registrado: Mar Sep 15, 2015 6:42 am
Ubicación: México
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ramonzea »

Otro detalle, si cargo un archivo con el visor de recursos dos veces, lo duplica.
ejemplo:
Cargo una imagen en un botón y veo que se ve mal, lo edito en la carpeta origen y vuelvo a cargarlo con el editor de recursos para que copie la nueva imagen modificada y se duplica.

Saludos.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ignacio »

ramonzea escribió: Jue Feb 04, 2021 11:07 am Otro detalle, si cargo un archivo con el visor de recursos dos veces, lo duplica.
ejemplo:
Cargo una imagen en un botón y veo que se ve mal, lo edito en la carpeta origen y vuelvo a cargarlo con el editor de recursos para que copie la nueva imagen modificada y se duplica.

Saludos.
Entiendo que realmente está cargando el archivo DOS VECES. Siempre puede editar el archivo .RC y guardar lo que realmente quiera.

Un saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ramonzea
Mensajes: 130
Registrado: Mar Sep 15, 2015 6:42 am
Ubicación: México
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ramonzea »

Si, es correcto, y como dice, simplemente edito el .rc y hago la corrección; en la otra versión que tengo sustituye dicho recurso.
Igualmente con el browseMod edito el archivo .xfm y corrijo el orden de las columnas.

Saludos.
Avatar de Usuario
ramonzea
Mensajes: 130
Registrado: Mar Sep 15, 2015 6:42 am
Ubicación: México
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ramonzea »

Otra observación:
Quiero en un browseMod editar una celda, y le pongo la propiedad
TBrowseMod:lFastEdit = .t.
y
TBrwColMod:lCanEdit = .t.
pero no se genera la edición, si pongo
TBrowseMod:lAllowEdit = .t.
entran en edición todas las columnas con
TBrwColMod:lCanEdit = .t.

Lo que busco es editar solo una celda a la vez.

Saludos.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ignacio »

Buenos días,

lFastEdit falla en su versión, pero ya está corregido. No obstante doble-click debería sólo editar una columna si lShowCellSeleCted esta a .t.

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Re: Avanzando con TBrowseMod

Mensaje por gabo1 »

Hola
Una Observación:
la Propiedad nClrDivider <No> se actualiza en IDE
Saludos!
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ignacio »

gabo1 escribió: Jue Feb 04, 2021 10:59 pm Hola
Una Observación:
la Propiedad nClrDivider <No> se actualiza en IDE
Saludos!
Compruebo que se actualiza correctamente. Obviamente nRecSelcectorWidt > 0

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Re: Avanzando con TBrowseMod

Mensaje por gabo1 »

Duda
Como puedo cambiar el Font de las columnas??
Saludos
Avatar de Usuario
MarceloAR
Mensajes: 24
Registrado: Dom Dic 01, 2019 2:38 pm
Ubicación: Argentina
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por MarceloAR »

Hola Gabo buenas tardes, yo lo he cambiado de esta manera, en el create del browse

Código: Seleccionar todo

::oBrwTurnos:oFont := TFont():Create("Arial",16)
Saludos
Marcelo Roggeri
Argentina
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Re: Avanzando con TBrowseMod

Mensaje por gabo1 »

Gracias marcelo..
Pero me cambia tambien el font del titulo y yo solo quiero el font de las celdas .. logre hacer algo pero no se si sea correcto la forma por el momento funciona pero cambia el Font de todas las columnas.. (en el tradicional si puedes hacerlo)

Código: Seleccionar todo

// ESTO FUNCIONA PERO CAMBIA LA FUENTE DE TODAS LAS COLUMNAS
//------------------------------------------------------------------------------
METHOD BrwPedidosDrawCell( oSender, oCol, nIndex, xValue, cValue, nImage, nClrText, nClrPane, nState, hDC, aRect ) CLASS TFormDomicilioCards
  LOCAL oFont,hFont

  IF oCol:cHeader=="No. Sigue"
     nClrText:= clBlue
     oFont:= TFont():Create( "Consolas",14,0,550 )
     hFont:= SelectObject( hDC, oFont:Handle )
     DrawText( hDC, xValue, aRect, DT_RIGHT )
     oFont:= NIL
     hFont:= NIL
  ELSEIF oCol:cHeader=="Folio Venta"
     nClrText:= clRed
  ELSEIF oCol:cHeader=="Teléfono"
  ELSEIF oCol:cHeader=="Nombre del Cliente"
  ELSEIF oCol:cHeader=="Status"
    DO CASE
       CASE cValue=="Impresa"
            xValue:= ""
            nImage:= 3
       CASE cValue=="NO"
            xValue:= ""
            nImage:= 1
       OTHER
    ENDCASE
  ENDIF
RETURN Nil
Un Saludo
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Re: Avanzando con TBrowseMod

Mensaje por gabo1 »

Observación
La Propiedad nClrPaneEnd,oBkgnd no esta documentada.. cual es su función ? no se puede indentifcar visualmemte en el IDE y ejecución oBkgnd no se visualiza (entiendo que es una imagen "marca de agua" dentro del browse)
Saludos!
Última edición por gabo1 el Sab Feb 06, 2021 5:31 am, editado 1 vez en total.
Avatar de Usuario
ramonzea
Mensajes: 130
Registrado: Mar Sep 15, 2015 6:42 am
Ubicación: México
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ramonzea »

Si hago cambio de los colores de la columna con
DBBrowse1DrawCell( oSender, oCol, nIndex, xValue, cValue, nImage, nClrText, nClrPane, nState, hDC, aRect )
el pintado con el color Hot no se aplica.
Adjuntos
Errorbnrowsemod01.png
Errorbnrowsemod01.png (17.13 KiB) Visto 4346 veces
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Re: Avanzando con TBrowseMod

Mensaje por gabo1 »

Observación:
En el Evento OnClick, se tiene que ejecutar dos veces para que se actualice el TBrowseMod:oDataSet, en el primer Click del ratón en la fila no se actualiza se tiene que hacer otro click en la misma fila para que se actualice correctamente.. usando el mismo metodo con el evento OnKeyUp y las flechas arriba y abajo todo va bien
Comprobado con el ejemplo DbBrowse

Código: Seleccionar todo

//------------------------------------------------------------------------------
METHOD DbBrowseMod1Click( oSender ) CLASS TForm1
   // oLabel1 lo cambie a un control TNoEdit 
   ::oLabel1:value:= AllTrim(::oDbBrowseMod1:oDataSet:first)+" "+CRLF+;
                              AllTrim(::oDbBrowseMod1:oDataSet:Last)+" "+CRLF+;
                              AllTrim(::oDbBrowseMod1:oDataSet:Street)
RETURN Nil
Un Saludo
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ignacio »

ramonzea escribió: Sab Feb 06, 2021 12:35 am Si hago cambio de los colores de la columna con
DBBrowse1DrawCell( oSender, oCol, nIndex, xValue, cValue, nImage, nClrText, nClrPane, nState, hDC, aRect )
el pintado con el color Hot no se aplica.
Debe controlarlo con el color que le llega en nClrPane.

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ignacio »

gabo1 escribió: Sab Feb 06, 2021 2:13 am Observación:
En el Evento OnClick, se tiene que ejecutar dos veces para que se actualice el TBrowseMod:oDataSet, en el primer Click del ratón en la fila no se actualiza se tiene que hacer otro click en la misma fila para que se actualice correctamente.. usando el mismo metodo con el evento OnKeyUp y las flechas arriba y abajo todo va bien
Comprobado con el ejemplo DbBrowse

Código: Seleccionar todo

//------------------------------------------------------------------------------
METHOD DbBrowseMod1Click( oSender ) CLASS TForm1
   // oLabel1 lo cambie a un control TNoEdit 
   ::oLabel1:value:= AllTrim(::oDbBrowseMod1:oDataSet:first)+" "+CRLF+;
                              AllTrim(::oDbBrowseMod1:oDataSet:Last)+" "+CRLF+;
                              AllTrim(::oDbBrowseMod1:oDataSet:Street)
RETURN Nil
Un Saludo
Esto es así, porque el evento se puede para devolviendo falso y por lo tanto la fila no se selecciona. Si le quitamos esa opción podría hacerse para que OnClick se disparase después de que la fila haya sido seleccionada y no antes. No obstante, en la próxima revisión tiene un nuevo método OnChange( oSender, lRowChanged )

Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ignacio »

gabo1 escribió: Vie Feb 05, 2021 11:34 pm Observación
La Propiedad nClrPaneEnd,oBkgnd no esta documentada.. cual es su función ? no se puede indentifcar visualmemte en el IDE y ejecución oBkgnd no se visualiza (entiendo que es una imagen "marca de agua" dentro del browse)
Saludos!
Esa propiedad está a un nivel muy superior en el nivel de herencia. Sirve para hacer un degradado entre los colores nClrPane y nClrPaneEnd, pero además la propiedad nGradient ha de tener valor.

Un saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
ramonzea
Mensajes: 130
Registrado: Mar Sep 15, 2015 6:42 am
Ubicación: México
Contactar:

Re: Avanzando con TBrowseMod

Mensaje por ramonzea »

Me ha salido este erro varias veces trabajando con las TBrowseMod.

Saludos.
Adjuntos
Errorbnrowsemod02.png
Errorbnrowsemod02.png (16.48 KiB) Visto 4300 veces
Responder