Inhabilitar columna en xBrowse - Disable column in xBrowse

Inhabilitar columna en xBrowse - Disable column in xBrowse

Postby FranciscoA » Sat Sep 19, 2020 2:24 am

Hola a todos.
¿Es posible inhabilitar determinadas columnas en xBrowse?

Se requiere que en un xBrowse de 5 columnas, inhabilitar la 2, 4 y 5, y asi poder navegar solamente en las columnas 1 y 3.
Gracias.

Hi all.
Is it possible to disable certain columns in xBrowse?

It is required that in a 5-column xBrowse, disable 2, 4 and 5, and thus be able to navigate only in columns 1 and 3.
Thanks,
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Inhabilitar columna en xBrowse - Disable column in xBrowse

Postby VitalJavier » Sat Sep 19, 2020 4:37 am

Francisco

Lo hice manual :

Code: Select all  Expand view

oBrow2:lColChangeNotify := .T.
oBrow2:bChange  := {|nRow,nCol| IF(oBrow2:nColSel<>3, (oBrow2:nColSel:=3,oBrow2:Refresh()),"") }
 


asi controle que solo navegara en una sola columna
Podrias hacer algo con esto.

Saludos.
User avatar
VitalJavier
 
Posts: 241
Joined: Mon Jun 10, 2013 6:40 pm

Re: Inhabilitar columna en xBrowse - Disable column in xBrowse

Postby FranciscoA » Sat Sep 19, 2020 3:19 pm

VitalJavier wrote:Francisco

Lo hice manual :

Code: Select all  Expand view

oBrow2:lColChangeNotify := .T.
oBrow2:bChange  := {|nRow,nCol| IF(oBrow2:nColSel<>3, (oBrow2:nColSel:=3,oBrow2:Refresh()),"") }
 


asi controle que solo navegara en una sola columna
Podrias hacer algo con esto.

Saludos.


Javier:
Gracias por contestar.
Efectivamente, asi permite navegar solo en una columna.

Con el siguiente codigo puedo navegar solamente en columnas 1 y 2:
Code: Select all  Expand view
     :lColChangeNotify := .t.
      :bChange  := { |o| if( o:nColSel>=3, ( o:nColSel:=2, o:RefreshCurrent() ), nil ) }
 


Seguiré intentando.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Inhabilitar columna en xBrowse - Disable column in xBrowse

Postby FranciscoA » Sat Sep 19, 2020 3:30 pm

Con el código anterior se pueden establecer varias columnas siempre que sean contiguas.
La idea es navegar solamente en determinadas columnas, sean estas contiguas o no. Es decir, hacerlo sin cambiar posicion de columnas en el browse.

With the above code you can set multiple columns as long as they are contiguous.
The idea is to navigate only in certain columns, whether they are contiguous or not. This means do it without changing the position of the columns in the browse.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Inhabilitar columna en xBrowse - Disable column in xBrowse

Postby nageswaragunupudi » Mon Sep 21, 2020 12:11 pm

This is a simple implementation.
This works when all columns are visible in the browse window,
Code: Select all  Expand view
#include "fivewin.ch"

REQUEST DBFCDX

function Main()

   local oDlg, oBrw
   local aNavigate   := { 1, 3 }
   local nPrevCol    := aNavigate[ 1 ]

   USE CUSTOMER NEW ALIAS CUST SHARED VIA "DBFCDX"
   DEFINE DIALOG oDlg SIZE 850,500 PIXEL
   @ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
      DATASOURCE "CUST" ;
      COLUMNS "FIRST","LAST","CITY","AGE","SALARY" ;
      CELL LINES NOBORDER

   WITH OBJECT oBrw
      :lAllowColSwapping   := .f.
      :lAllowColHiding     := .f.
      :nColSel          := nPrevCol
      :lColChangeNotify := .t.
      :bChange          := { |o| BrwChange( o, aNavigate, @nPrevCol ) }
      :CreateFromCode()
   END

   ACTIVATE DIALOG oDlg CENTERED

return nil

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

function BrwChange( oBrw, aNavigate, nPrevCol )

   local nColSel  := Min( Max( oBrw:nColSel, aNavigate[ 1 ] ), ATail( aNavigate ) )

   if AScan( aNavigate, nColSel ) == 0
      if nColSel > nPrevCol
         nColSel  := aNavigate[ AScan( aNavigate, { |n| n >= nColSel } ) ]
      else
         nColSel  := aNavigate[ RAScan( aNavigate, { |n| n <= nColSel } ) ]
      endif
   endif

   if nColSel != oBrw:nColSel
      oBrw:nColSel   := nColSel
      oBrw:RefreshCurrent()
   endif

   nPrevCol       := nColSel

return nil
Regards

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

Re: Inhabilitar columna en xBrowse - Disable column in xBrowse

Postby FranciscoA » Mon Sep 21, 2020 3:21 pm

Rao, gracias por tu amable atención.
Es lo que buscaba.

Rao, thank you, for your kind attention.
It's what i was looking for.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

evitar que se active columna con xbrowse al dar un click

Postby kpidata » Fri Sep 01, 2023 7:17 pm

Estimados Amigos, espero que estén bien, tengo el siguiente problema, estoy trabajando con xbrowse, en una lectura de una tabla con unos 10 campos, el punto es que cuando hago click sobre el campo codigo se ordena por el, luego hago click sobre el campo nombre, hace exactamente lo ordena de forma ascendente o descendente, hasta ahi todo ok, pero luego estan las columnas marca, familia, precio, etc, y si le hace click sobre esas columna, se ordena la tabla por ese parametro, pero yo no quiero que eso ocurra, solo quiero que esten activas las dos primeras columnas y las otras no, he tratado de encontrar un manual o alguna referencia de todas las opciones que tiene Xbrowse, pero no encuentro nada al respecto.. me dicen que vea la clase, pero por desgracia no encuentro la clase como para ir mirando que trae y que se configura por el browse o por las columnas y todas su posibilidades... les encargo el que me ayuden como se hace eso..


FUNCTION MENU_PRODUCTO(cEmpresa,cUsuario)
Local oDlg, oBrw, oFont2, oCol, oSay, oBtn2[ 9 ]
LOCAL oGet,nIndex,aIdx:={}
LOCAL cBusca:= Space(60)
Local cSeek:=""
Local oCampo, cCampo :=space(50)

cTab_Art:=xServer:Query("SELECT a.*, b.*, c.* FROM tab_art AS a LEFT JOIN tab_fam AS b ON a.fam_art = b.cod_fam LEFT JOIN tab_mar AS c ON a.mar_art = c.cod_mar ORDER BY nom_art ")

Define Font oFont2 Name "Tahoma" Size 0,-11 Bold
DEFINE DIALOG oDlg ResName "BROW6BG" TITLE "TABLA DE PRODUCTOS"

Redefine BtnGet oCampo Var cCampo Id 1002 Of oDlg Resource "BTO_ZOOM" Font oFont2 PICTURE "@!" COLOR RGB(128,0,0) ;
Action (FiltrarProducto(oBrw,cCampo,cTab_Art))

Redefine BtnBmp oBtn2[1] Id 101 Resource "BTO_NUEVO" Of oDlg 2007; // BTO_NUEVO
Action (Add_Producto(.T.,oBrw, cTab_Art, cEmpresa),oBrw:Refresh() ) Tooltip "Permite Ingresar nuevo Registro.."

Redefine BtnBmp oBtn2[2] Id 102 Resource "BTO_CAMBIA" Of oDlg 2007;
Action (Add_Producto(.F.,oBrw, cTab_Art, cEmpresa),oBrw:Refresh() ) Tooltip "Permite Cambiar y/o Modificar Registro.."

Redefine BtnBmp oBtn2[3] Id 103 Resource "BTO_BORRA" Of oDlg 2007;
ACTION (Del_Producto(oBrw,cTab_Art,cEmpresa,cTab_Art:cod_art),oDlg:End()) Tooltip "Permite Borrar y/o Eliminar Registro.."

Redefine BtnBmp oBtn2[4] Id 104 Resource "BTO_PRINT" Of oDlg 2007;
ACTION ( MSGRUN( "Procesando...., espere un momento por favor ", "Usuario" , {|| Print_Producto(cEmpresa,cTab_Art) } ),oBrw:Refresh(),oBrw:Gotop()) Tooltip "Imprime informe General del Archivo.."

Redefine BtnBmp oBtn2[5] Id 105 Resource "BTO_EXCEL" Of oDlg 2007;
ACTION ( MSGRUN( "Procesando...., espere un momento por favor ", "Usuario", {|| Excel_Producto(cEmpresa,cUsuario,cTab_Art) } ),oBrw:Refresh(),oBrw:Gotop()) Tooltip "Excel informe General del Archivo.."

Redefine BtnBmp oBtn2[6] Id 106 Resource "BTO_SALIR" Of oDlg 2007;
ACTION oDlg:End() Tooltip "Salir del Proceso.."

oBrw:=TxBrowse():New(oDlg)
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW // Con cursor de todo el renglón
oBrw:nColDividerStyle := LINESTYLE_RAISED
oBrw:nRowDividerStyle := LINESTYLE_RAISED
oBrw:bClrSelFocus := {|| { nRGB( 0, 0, 0), nRGB(128,255,128) } } // para barra de linea selecc cuando el control tiene el foco
oBrw:lColDividerComplete := (.t.) // (.T.) Mantiene siempre llena la pantalla
oBrw:nHeaderHeight := 35 // Altura de los encabezados
oBrw:nRowHeight := 25 // Altura del renglón
oBrw:nHeaderLines := 3 // Número de líneas de encabezados
oBrw:nDataLines := 2 // Número de líneas de detalle
oBrw:nFooterHeight := 20 // Altura del footer
oBrw:nFooterLines := 2 // Número de líneas en el footer
oBrw:bClrHeader := {|| { nRGB(000,000,000), nRGB(128,255,128) } }
oBrw:bClrStd := {|| If( oBrw:KeyNo() % 2 == 0, { CLR_BLACK, RGB( 224, 236, 255 ) }, { CLR_BLACK, RGB( 189, 211, 253 ) } ) }
oBrw:bClrFooter := {|| { nRGB(000,000,000), nRGB(150,200,200) } }
oBrw:bClrSel := {|| { nRGB(000,000,000), nRGB(128,255,128) } } // para barra de linea selecc cuando el control no tiene el foco
oBrw:l2007:=.T.
oBrw:lFooter := (.T.) // Sí queremos línea de footer
oBrw:lHScroll := (.T.) // Quitamos el scroll horizontal
oBrw:lVScroll := (.T.) // Quitamos el scroll horizontal
oBrw:nStretchCol := STRETCHCOL_WIDEST
oBrw:bLDblClick := {|| Opcion_Producto(oBrw, cTab_Art, cEmpresa), cTab_Art:Refresh() }
oBrw:bRClicked := {|| Stock_Producto(.F.,oBrw, cTab_Art, cEmpresa, cTab_Art:cod_art), cTab_Art:Refresh() }
oBrw:bKeyDown := { | nKey | TeclasProducto(nKey, oBrw, cTab_Art, cEmpresa) }
oBrw:oFont := oFont2
oBrw:SetDolphin(cTab_Art,.T.,.T.)

oBrw:aCols[1]:SetCheck( { "BOTONSI", "BOTONNO" } ) NO QUIERO QUE PASE NADA AL HACER DOBLE CLICK SOBRE ESTA COLUMNA
oBrw:aCols[1]:cHeader := "Est"
oBrw:aCols[1]:nHeadStrAlign := AL_LEFT //LEFT
oBrw:aCols[1]:bBmpData := { || iif( cTab_Art:opcion=.t., 1, 2) }
oBrw:aCols[1]:nWidth := 20

oBrw:aCols[2]:cHeader := "Código"
oBrw:aCols[2]:bStrData := { || cTab_Art:cod_art }
oBrw:aCols[2]:nHeadStrAlign := AL_CENTER
oBrw:aCols[2]:nDataStrAlign := AL_LEFT //LEFT
oBrw:aCols[2]:nWidth := 100
oBrw:aCols[2]:cSortOrder := "cod_art"
oBrw:aCols[2]:bLClickHeader := {|| oBrw:GoTop() }
oBrw:aCols[2]:cToolTip :="Haga doble Click para ordenar por código"

oBrw:aCols[3]:cHeader := "Detalle"
oBrw:aCols[3]:bStrData := { || cTab_Art:nom_art }
oBrw:aCols[3]:nHeadStrAlign := AL_CENTER
oBrw:aCols[3]:nDataStrAlign := AL_LEFT //LEFT
oBrw:aCols[3]:nWidth := 350
oBrw:aCols[3]:cSortOrder := "nom_art"
oBrw:aCols[3]:bLClickHeader := {|| oBrw:GoTop() }
oBrw:aCols[3]:cToolTip :="Haga doble Click para ordenar por Detalle"

oBrw:aCols[4]:cHeader := "Familia" NO QUIERO QUE PASE NADA AL HACER DOBLE CLICK SOBRE ESTA COLUMNA
oBrw:aCols[4]:bStrData := { || cTab_Art:nom_fam }
oBrw:aCols[4]:nHeadStrAlign := AL_CENTER
oBrw:aCols[4]:nDataStrAlign := AL_LEFT //LEFT
oBrw:aCols[4]:nWidth := 100

oBrw:aCols[5]:cHeader := "Marca" NO QUIERO QUE PASE NADA AL HACER DOBLE CLICK SOBRE ESTA COLUMNA
oBrw:aCols[5]:bStrData := { || cTab_Art:nom_mar }
oBrw:aCols[5]:nHeadStrAlign := AL_CENTER
oBrw:aCols[5]:nDataStrAlign := AL_LEFT //LEFT
oBrw:aCols[5]:nWidth := 100

oBrw:aCols[6]:cHeader := "Barra" NO QUIERO QUE PASE NADA AL HACER DOBLE CLICK SOBRE ESTA COLUMNA
oBrw:aCols[6]:bStrData := { || cTab_Art:cod_bar }
oBrw:aCols[6]:nHeadStrAlign := AL_CENTER
oBrw:aCols[6]:nDataStrAlign := AL_LEFT //LEFT
oBrw:aCols[6]:nWidth := 100

oBrw:aCols[7]:cHeader := "Precio"+CRLF+"Venta" NO QUIERO QUE PASE NADA AL HACER DOBLE CLICK SOBRE ESTA COLUMNA
oBrw:aCols[7]:bStrData := { || Transform( cTab_Art:pve_art, "@E 99,999,999") }
oBrw:aCols[7]:nHeadStrAlign := AL_CENTER
oBrw:aCols[7]:nDataStrAlign := AL_RIGHT //LEFT
oBrw:aCols[7]:nWidth := 100

oBrw:aCols[8]:cHeader := "Stock"+CRLF+cEmpresa[21] NO QUIERO QUE PASE NADA AL HACER DOBLE CLICK SOBRE ESTA COLUMNA
oBrw:aCols[8]:bStrData := { || Transform(((cTab_Art:in1_art + cTab_Art:en1_art) - cTab_Art:sa1_art),"@E 999,999.99") }
oBrw:aCols[8]:nHeadStrAlign := AL_CENTER
oBrw:aCols[8]:nDataStrAlign := AL_RIGHT //LEFT
oBrw:aCols[8]:nWidth := 80

oBrw:aCols[9]:cHeader := "Stock"+CRLF+cEmpresa[22] NO QUIERO QUE PASE NADA AL HACER DOBLE CLICK SOBRE ESTA COLUMNA
oBrw:aCols[9]:bStrData := { || Transform(((cTab_Art:in2_art + cTab_Art:en2_art) - cTab_Art:sa2_art),"@E 999,999.99") }
oBrw:aCols[9]:nHeadStrAlign := AL_CENTER
oBrw:aCols[9]:nDataStrAlign := AL_RIGHT //LEFT
oBrw:aCols[9]:nWidth := 80

oBrw:CreateFromResource( 1000 )

Redefine Say oBrw:oSeek Var oBrw:cSeek Id 1001 Of oDlg Picture "@!" Font oFont2 COLOR Rgb( 255, 0, 0 ), Rgb(185,220,255)

ACTIVATE DIALOG oDlg CENTERED
oFont2:End()
cTab_Art:End()
Return NIl
kpidata
 
Posts: 80
Joined: Tue Jul 26, 2016 9:52 pm

Re: Inhabilitar columna en xBrowse - Disable column in xBrowse

Postby cmsoft » Fri Sep 01, 2023 9:42 pm

Pueder decirselo a Xbrowse
Code: Select all  Expand view

oBrw:aCols[1]:cSortOrder := nil
oBrw:aCols[4]:cSortOrder := nil
oBrw:aCols[5]:cSortOrder := nil
oBrw:aCols[6]:cSortOrder := nil
oBrw:aCols[7]:cSortOrder := nil
oBrw:aCols[8]:cSortOrder := nil
oBrw:aCols[9]:cSortOrder := nil
 


he tratado de encontrar un manual o alguna referencia de todas las opciones que tiene Xbrowse

Creo que lo mejor es ver el codigo fuente de la clase, ver las datas y los metodos y probar el efecto

Espero que te sea de utilidad
User avatar
cmsoft
 
Posts: 1290
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Inhabilitar columna en xBrowse - Disable column in xBrowse

Postby kpidata » Fri Sep 01, 2023 11:00 pm

Estimado, me sirvio muchisimo.. gracias eres un tremendo... en esta comunidad, lo que dices lo haria, pero por desgracia perdi toda información con la entrada de un virus y solo me quedo las lib y las ch, para la compilación, de lo contrario habria intentado ir por ese lado, gracias.... por la ayuda en todo caso...
kpidata
 
Posts: 80
Joined: Tue Jul 26, 2016 9:52 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 46 guests