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.

Derivar de una Clase... TBrowse.

Foro de Xailer profesional en español
Responder
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Derivar de una Clase... TBrowse.

Mensaje por Xevi »

Hola,
No se que estoy haciendo mal, pero no me sale el derivar un método de la clase TBrowse
Esta es la clase que derivo, y si bien me funcionan las propiedades, al querer tener un mismo método en la clase, eso no me funciona bien...
Pretendo que cuando se pulse el botón derecho, se cambie de registro el Browse...
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lAllowColSizing INIT .F. //NO Canvi de Tamany Columnes
PROPERTY lRecordSelector INIT .F. //Sel.lecció de tota la lí­nia
PROPERTY nColDividerStyle INIT blLIGHTGRAY
PROPERTY nRowDividerStyle INIT blLIGHTGRAY
PUBLIC:
METHOD OnRClick( oSender, nFlags, nRow, nCol )
END CLASS
//---------------------------------------------------------- --------------
METHOD OnRClick( oSender, nFlags, nRow, nCol ) CLASS TBrowse
LOCAL nPos
IF ( nPos := ::MouseRowPos( nRow ) ) != ::nRowSel
::nKeyNo += ::OnSkip( nPos - ::nRowSel )
::nRowSel := nPos
::Refresh()
::OnChange()
ENDIF
RETURN Nil
Creo que no entiendo bien el tema de méthodos de una Clase derivada...
En cambio... cuando lo que hago es según lo que me apuntaste en otro post, desde un Form...
//---------------------------------------------------------- --------------------
METHOD FormShow( oSender ) CLASS TForm1
::oArrayBrowse1:OnRClick := "xDBBrowse1RClick"
RETURN Nil
//---------------------------------------------------------- --------------------
METHOD xDBBrowse1RClick( oSender, nFlags, nRow, nCol ) CLASS TForm1
LOCAL nPos
WITH OBJECT ::oArrayBrowse1
IF ( nPos := :MouseRowPos( nRow ) ) != :nRowSel
:nKeyNo += :OnSkip( nPos - :nRowSel )
:nRowSel := nPos
:Refresh()
:OnChange()
ENDIF
END
RETURN Nil
Esto si funciona correctamente !!!
Gracias.
Un Saludo,
Xevi.
--
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Derivar de una Clase... TBrowse.

Mensaje por jfgimenez »

Xevi,
el problema viene de que OnRClick no es un método, sino un evento.
Originalmente, el motor de objetos soporta miembros de tipo DATA, CLASSDATA
y METHOD, pero Xailer lo amplía con dos tipos más: PROPERTY y EVENT. Y no se
pueden mezclar. Lo que quiero decir es que si una clase tiene un miembro
concreto de un tipo, en una clase derivada tiene que seguir siendo de ese
tipo y no otro.
En el caso que planteas, la solución es sobreescribir el método
WMRButtonDown:
METHOD WMRButtonDown( nWParam, nLParam ) CLASS TBrowse
// Nota: a raiz de un mensaje anterior tuyo ya añadimos este metodo
::SelectCellFromPoint( LoWord( nLParam ), HiWord( nLParam ) )
RETURN Super:WMRButtonDown( nWParam, nLParam )
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9469
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Derivar de una Clase... TBrowse.

Mensaje por ignacio »

Xevi,
En la próxima versión estará operativo con un nuevo metodo SelectCellFromPoint().
No obstante lo estas haciendo mal. Lo que se sobre carga no es el evento, ya que este simplemente se dispara, pero no tiene ningún código asociado a él. Lo que hay que sobrecargar es el método original del API, en tu caso:
METHOD WMRButtonDown( nWParam, nLParam )
Y serí­a algo así­:
METHOD WMRButtonDown( nWParam, nLParam ) CLASS XBrowse
local nFlags, nX, nY, xRet
nFlags := nWParam
nX := LoWord( nLParam )
nY := HiWord( nLParam )
xRet := Super:WMRButtonDown( nWParam, nLParam )
// Y aquí­ va tu codigo
RETURN xRet
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=42c568d0@ozsrvnegro.ozlan.local...]42c568d0@ozsrvnegro.ozlan.local...[/email]
Hola,
No se que estoy haciendo mal, pero no me sale el derivar un método de la clase TBrowse
Esta es la clase que derivo, y si bien me funcionan las propiedades, al querer tener un mismo método en la clase, eso no me funciona bien...
Pretendo que cuando se pulse el botón derecho, se cambie de registro el Browse...
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lAllowColSizing INIT .F. //NO Canvi de Tamany Columnes
PROPERTY lRecordSelector INIT .F. //Sel.lecció de tota la lí­nia
PROPERTY nColDividerStyle INIT blLIGHTGRAY
PROPERTY nRowDividerStyle INIT blLIGHTGRAY
PUBLIC:
METHOD OnRClick( oSender, nFlags, nRow, nCol )
END CLASS
//---------------------------------------------------------- --------------
METHOD OnRClick( oSender, nFlags, nRow, nCol ) CLASS TBrowse
LOCAL nPos
IF ( nPos := ::MouseRowPos( nRow ) ) != ::nRowSel
::nKeyNo += ::OnSkip( nPos - ::nRowSel )
::nRowSel := nPos
::Refresh()
::OnChange()
ENDIF
RETURN Nil
Creo que no entiendo bien el tema de méthodos de una Clase derivada...
En cambio... cuando lo que hago es según lo que me apuntaste en otro post, desde un Form...
//---------------------------------------------------------- --------------------
METHOD FormShow( oSender ) CLASS TForm1
::oArrayBrowse1:OnRClick := "xDBBrowse1RClick"
RETURN Nil
//---------------------------------------------------------- --------------------
METHOD xDBBrowse1RClick( oSender, nFlags, nRow, nCol ) CLASS TForm1
LOCAL nPos
WITH OBJECT ::oArrayBrowse1
IF ( nPos := :MouseRowPos( nRow ) ) != :nRowSel
:nKeyNo += :OnSkip( nPos - :nRowSel )
:nRowSel := nPos
:Refresh()
:OnChange()
ENDIF
END
RETURN Nil
Esto si funciona correctamente !!!
Gracias.
Un Saludo,
Xevi.
--
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Derivar de una Clase... TBrowse.

Mensaje por Xevi »

Gracias, José e Ignacio...
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje news:42c57176$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
Xevi,
En la próxima versión estará operativo con un nuevo metodo SelectCellFromPoint().
No obstante lo estas haciendo mal. Lo que se sobre carga no es el evento, ya que este simplemente se dispara, pero no tiene ningún código asociado a él. Lo que hay que sobrecargar es el método original del API, en tu caso:
METHOD WMRButtonDown( nWParam, nLParam )
Y serí­a algo así­:
METHOD WMRButtonDown( nWParam, nLParam ) CLASS XBrowse
local nFlags, nX, nY, xRet
nFlags := nWParam
nX := LoWord( nLParam )
nY := HiWord( nLParam )
xRet := Super:WMRButtonDown( nWParam, nLParam )
// Y aquí­ va tu codigo
RETURN xRet
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=42c568d0@ozsrvnegro.ozlan.local...]42c568d0@ozsrvnegro.ozlan.local...[/email]
Hola,
No se que estoy haciendo mal, pero no me sale el derivar un método de la clase TBrowse
Esta es la clase que derivo, y si bien me funcionan las propiedades, al querer tener un mismo método en la clase, eso no me funciona bien...
Pretendo que cuando se pulse el botón derecho, se cambie de registro el Browse...
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lAllowColSizing INIT .F. //NO Canvi de Tamany Columnes
PROPERTY lRecordSelector INIT .F. //Sel.lecció de tota la lí­nia
PROPERTY nColDividerStyle INIT blLIGHTGRAY
PROPERTY nRowDividerStyle INIT blLIGHTGRAY
PUBLIC:
METHOD OnRClick( oSender, nFlags, nRow, nCol )
END CLASS
//---------------------------------------------------------- --------------
METHOD OnRClick( oSender, nFlags, nRow, nCol ) CLASS TBrowse
LOCAL nPos
IF ( nPos := ::MouseRowPos( nRow ) ) != ::nRowSel
::nKeyNo += ::OnSkip( nPos - ::nRowSel )
::nRowSel := nPos
::Refresh()
::OnChange()
ENDIF
RETURN Nil
Creo que no entiendo bien el tema de méthodos de una Clase derivada...
En cambio... cuando lo que hago es según lo que me apuntaste en otro post, desde un Form...
//---------------------------------------------------------- --------------------
METHOD FormShow( oSender ) CLASS TForm1
::oArrayBrowse1:OnRClick := "xDBBrowse1RClick"
RETURN Nil
//---------------------------------------------------------- --------------------
METHOD xDBBrowse1RClick( oSender, nFlags, nRow, nCol ) CLASS TForm1
LOCAL nPos
WITH OBJECT ::oArrayBrowse1
IF ( nPos := :MouseRowPos( nRow ) ) != :nRowSel
:nKeyNo += :OnSkip( nPos - :nRowSel )
:nRowSel := nPos
:Refresh()
:OnChange()
ENDIF
END
RETURN Nil
Esto si funciona correctamente !!!
Gracias.
Un Saludo,
Xevi.
--
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9469
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Derivar de una Clase... TBrowse.

Mensaje por ignacio »

Xevi,
Por cierto, he pensado en ampliar los valores posible de oColumn:nAlignment, a uno mas. Actualmente son:
VALUES taLEFT, taRIGHT, taCENTER
y añadirí­a uno nuevo para datos a la derecha header centrado: taRIGHTHEADERCENTER
Me gusta más esta forma que tener otra propiedad más en la columna.
¿Crees que harí­a falta algún valor más posible?
Gracias
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=42c5731e@ozsrvnegro.ozlan.local...]42c5731e@ozsrvnegro.ozlan.local...[/email]
Gracias, José e Ignacio...
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje news:42c57176$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
Xevi,
En la próxima versión estará operativo con un nuevo metodo SelectCellFromPoint().
No obstante lo estas haciendo mal. Lo que se sobre carga no es el evento, ya que este simplemente se dispara, pero no tiene ningún código asociado a él. Lo que hay que sobrecargar es el método original del API, en tu caso:
METHOD WMRButtonDown( nWParam, nLParam )
Y serí­a algo así­:
METHOD WMRButtonDown( nWParam, nLParam ) CLASS XBrowse
local nFlags, nX, nY, xRet
nFlags := nWParam
nX := LoWord( nLParam )
nY := HiWord( nLParam )
xRet := Super:WMRButtonDown( nWParam, nLParam )
// Y aquí­ va tu codigo
RETURN xRet
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=42c568d0@ozsrvnegro.ozlan.local...]42c568d0@ozsrvnegro.ozlan.local...[/email]
Hola,
No se que estoy haciendo mal, pero no me sale el derivar un método de la clase TBrowse
Esta es la clase que derivo, y si bien me funcionan las propiedades, al querer tener un mismo método en la clase, eso no me funciona bien...
Pretendo que cuando se pulse el botón derecho, se cambie de registro el Browse...
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lAllowColSizing INIT .F. //NO Canvi de Tamany Columnes
PROPERTY lRecordSelector INIT .F. //Sel.lecció de tota la lí­nia
PROPERTY nColDividerStyle INIT blLIGHTGRAY
PROPERTY nRowDividerStyle INIT blLIGHTGRAY
PUBLIC:
METHOD OnRClick( oSender, nFlags, nRow, nCol )
END CLASS
//---------------------------------------------------------- --------------
METHOD OnRClick( oSender, nFlags, nRow, nCol ) CLASS TBrowse
LOCAL nPos
IF ( nPos := ::MouseRowPos( nRow ) ) != ::nRowSel
::nKeyNo += ::OnSkip( nPos - ::nRowSel )
::nRowSel := nPos
::Refresh()
::OnChange()
ENDIF
RETURN Nil
Creo que no entiendo bien el tema de méthodos de una Clase derivada...
En cambio... cuando lo que hago es según lo que me apuntaste en otro post, desde un Form...
//---------------------------------------------------------- --------------------
METHOD FormShow( oSender ) CLASS TForm1
::oArrayBrowse1:OnRClick := "xDBBrowse1RClick"
RETURN Nil
//---------------------------------------------------------- --------------------
METHOD xDBBrowse1RClick( oSender, nFlags, nRow, nCol ) CLASS TForm1
LOCAL nPos
WITH OBJECT ::oArrayBrowse1
IF ( nPos := :MouseRowPos( nRow ) ) != :nRowSel
:nKeyNo += :OnSkip( nPos - :nRowSel )
:nRowSel := nPos
:Refresh()
:OnChange()
ENDIF
END
RETURN Nil
Esto si funciona correctamente !!!
Gracias.
Un Saludo,
Xevi.
--
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Derivar de una Clase... TBrowse.

Mensaje por Xevi »

Ignacio,
Creo que si puedes incorporar estas "Values" para oColumn:nAlignment, serí­a perfecto !!!
taLEFT //Columna y Header Left
taLEFTHEADERCENTER //Columna Left Header Center
taLEFTHEADERRIGHT //Columna Left Header Right
taRIGHT //Columna y Header Right
taRIGHTHEADERCENTER //Columna Right Header Center
taRIGHTHEADERLEFT //Columna Right Header Left
taCENTER //Columna y Header Center
taCENTERHEADERRIGHT //Columna Center Header Right
taCENTERHEADERLEFT //Columna Center Header Left
Un Saludo,
Xevi.
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:42c57e0b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
Xevi,
Por cierto, he pensado en ampliar los valores posible de oColumn:nAlignment, a uno mas. Actualmente son:
VALUES taLEFT, taRIGHT, taCENTER
y añadirí­a uno nuevo para datos a la derecha header centrado: taRIGHTHEADERCENTER
Me gusta más esta forma que tener otra propiedad más en la columna.
¿Crees que harí­a falta algún valor más posible?
Gracias
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=42c5731e@ozsrvnegro.ozlan.local...]42c5731e@ozsrvnegro.ozlan.local...[/email]
Gracias, José e Ignacio...
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje news:42c57176$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
Xevi,
En la próxima versión estará operativo con un nuevo metodo SelectCellFromPoint().
No obstante lo estas haciendo mal. Lo que se sobre carga no es el evento, ya que este simplemente se dispara, pero no tiene ningún código asociado a él. Lo que hay que sobrecargar es el método original del API, en tu caso:
METHOD WMRButtonDown( nWParam, nLParam )
Y serí­a algo así­:
METHOD WMRButtonDown( nWParam, nLParam ) CLASS XBrowse
local nFlags, nX, nY, xRet
nFlags := nWParam
nX := LoWord( nLParam )
nY := HiWord( nLParam )
xRet := Super:WMRButtonDown( nWParam, nLParam )
// Y aquí­ va tu codigo
RETURN xRet
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=42c568d0@ozsrvnegro.ozlan.local...]42c568d0@ozsrvnegro.ozlan.local...[/email]
Hola,
No se que estoy haciendo mal, pero no me sale el derivar un método de la clase TBrowse
Esta es la clase que derivo, y si bien me funcionan las propiedades, al querer tener un mismo método en la clase, eso no me funciona bien...
Pretendo que cuando se pulse el botón derecho, se cambie de registro el Browse...
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lAllowColSizing INIT .F. //NO Canvi de Tamany Columnes
PROPERTY lRecordSelector INIT .F. //Sel.lecció de tota la lí­nia
PROPERTY nColDividerStyle INIT blLIGHTGRAY
PROPERTY nRowDividerStyle INIT blLIGHTGRAY
PUBLIC:
METHOD OnRClick( oSender, nFlags, nRow, nCol )
END CLASS
//---------------------------------------------------------- --------------
METHOD OnRClick( oSender, nFlags, nRow, nCol ) CLASS TBrowse
LOCAL nPos
IF ( nPos := ::MouseRowPos( nRow ) ) != ::nRowSel
::nKeyNo += ::OnSkip( nPos - ::nRowSel )
::nRowSel := nPos
::Refresh()
::OnChange()
ENDIF
RETURN Nil
Creo que no entiendo bien el tema de méthodos de una Clase derivada...
En cambio... cuando lo que hago es según lo que me apuntaste en otro post, desde un Form...
//---------------------------------------------------------- --------------------
METHOD FormShow( oSender ) CLASS TForm1
::oArrayBrowse1:OnRClick := "xDBBrowse1RClick"
RETURN Nil
//---------------------------------------------------------- --------------------
METHOD xDBBrowse1RClick( oSender, nFlags, nRow, nCol ) CLASS TForm1
LOCAL nPos
WITH OBJECT ::oArrayBrowse1
IF ( nPos := :MouseRowPos( nRow ) ) != :nRowSel
:nKeyNo += :OnSkip( nPos - :nRowSel )
:nRowSel := nPos
:Refresh()
:OnChange()
ENDIF
END
RETURN Nil
Esto si funciona correctamente !!!
Gracias.
Un Saludo,
Xevi.
--
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Derivar de una Clase... TBrowse.

Mensaje por Xevi »

Sigo derivando del TBrowse
Ahora pretendo que por defecto el Browse me muestre la barra Vertical SIEMPRE, pero que no me muestre la horizontal
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lAutoHScroll INIT .F.
PROPERTY lAutoVScroll INIT .F.
PROPERTY lVScroll INIT .T.
PROPERTY lHScroll INIT .F.
ENDCLASS
Bien, pues eso no funciona... no muestra la Scroll Vertical.
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lAutoHScroll INIT .F.
PROPERTY lAutoVScroll INIT .F.
PROPERTY lVScroll INIT .T.
PROPERTY lHScroll INIT .F.
ENDCLASS
Por probar con la horizontal... el mismo problema...
Esto tampoco funciona, no muestra la Scroll Horizontal.
Desde programa, en OnCreate del Browse, si se ponen estas propiedades, si funciona correctamente.
El problema está cuando pretendo derivar de la clase TBrowse.
Un Saludo,
Xevi.
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=42c568d0@ozsrvnegro.ozlan.local...]42c568d0@ozsrvnegro.ozlan.local...[/email]
Hola,
No se que estoy haciendo mal, pero no me sale el derivar un método de la clase TBrowse
Esta es la clase que derivo, y si bien me funcionan las propiedades, al querer tener un mismo método en la clase, eso no me funciona bien...
Pretendo que cuando se pulse el botón derecho, se cambie de registro el Browse...
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lAllowColSizing INIT .F. //NO Canvi de Tamany Columnes
PROPERTY lRecordSelector INIT .F. //Sel.lecció de tota la lí­nia
PROPERTY nColDividerStyle INIT blLIGHTGRAY
PROPERTY nRowDividerStyle INIT blLIGHTGRAY
PUBLIC:
METHOD OnRClick( oSender, nFlags, nRow, nCol )
END CLASS
//---------------------------------------------------------- --------------
METHOD OnRClick( oSender, nFlags, nRow, nCol ) CLASS TBrowse
LOCAL nPos
IF ( nPos := ::MouseRowPos( nRow ) ) != ::nRowSel
::nKeyNo += ::OnSkip( nPos - ::nRowSel )
::nRowSel := nPos
::Refresh()
::OnChange()
ENDIF
RETURN Nil
Creo que no entiendo bien el tema de méthodos de una Clase derivada...
En cambio... cuando lo que hago es según lo que me apuntaste en otro post, desde un Form...
//---------------------------------------------------------- --------------------
METHOD FormShow( oSender ) CLASS TForm1
::oArrayBrowse1:OnRClick := "xDBBrowse1RClick"
RETURN Nil
//---------------------------------------------------------- --------------------
METHOD xDBBrowse1RClick( oSender, nFlags, nRow, nCol ) CLASS TForm1
LOCAL nPos
WITH OBJECT ::oArrayBrowse1
IF ( nPos := :MouseRowPos( nRow ) ) != :nRowSel
:nKeyNo += :OnSkip( nPos - :nRowSel )
:nRowSel := nPos
:Refresh()
:OnChange()
ENDIF
END
RETURN Nil
Esto si funciona correctamente !!!
Gracias.
Un Saludo,
Xevi.
--
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Derivar de una Clase... TBrowse.

Mensaje por Xevi »

Persiste error al derivar...
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lAutoHScroll INIT .F.
PROPERTY lAutoVScroll INIT .F.
PROPERTY lVScroll INIT .T.
PROPERTY lHScroll INIT .F.
ENDCLASS
La barra Vertical no se visualiza aunque fuerce lVScroll a .T.
Para que se fuerce la barra Vertical, tengo que poner oSender:lVScroll := .T., en el método OnCreate del Browse.
La barra Horizontal si que funciona y coje el valor de lHScroll al derivar de xBrowse.
Un Saludo,
Xevi.
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=431f2f2e@ozsrvnegro.ozlan.local...]431f2f2e@ozsrvnegro.ozlan.local...[/email]
Sigo derivando del TBrowse
Ahora pretendo que por defecto el Browse me muestre la barra Vertical SIEMPRE, pero que no me muestre la horizontal
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lAutoHScroll INIT .F.
PROPERTY lAutoVScroll INIT .F.
PROPERTY lVScroll INIT .T.
PROPERTY lHScroll INIT .F.
ENDCLASS
Bien, pues eso no funciona... no muestra la Scroll Vertical.
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lAutoHScroll INIT .F.
PROPERTY lAutoVScroll INIT .F.
PROPERTY lVScroll INIT .T.
PROPERTY lHScroll INIT .F.
ENDCLASS
Por probar con la horizontal... el mismo problema...
Esto tampoco funciona, no muestra la Scroll Horizontal.
Desde programa, en OnCreate del Browse, si se ponen estas propiedades, si funciona correctamente.
El problema está cuando pretendo derivar de la clase TBrowse.
Un Saludo,
Xevi.
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=42c568d0@ozsrvnegro.ozlan.local...]42c568d0@ozsrvnegro.ozlan.local...[/email]
Hola,
No se que estoy haciendo mal, pero no me sale el derivar un método de la clase TBrowse
Esta es la clase que derivo, y si bien me funcionan las propiedades, al querer tener un mismo método en la clase, eso no me funciona bien...
Pretendo que cuando se pulse el botón derecho, se cambie de registro el Browse...
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lAllowColSizing INIT .F. //NO Canvi de Tamany Columnes
PROPERTY lRecordSelector INIT .F. //Sel.lecció de tota la lí­nia
PROPERTY nColDividerStyle INIT blLIGHTGRAY
PROPERTY nRowDividerStyle INIT blLIGHTGRAY
PUBLIC:
METHOD OnRClick( oSender, nFlags, nRow, nCol )
END CLASS
//---------------------------------------------------------- --------------
METHOD OnRClick( oSender, nFlags, nRow, nCol ) CLASS TBrowse
LOCAL nPos
IF ( nPos := ::MouseRowPos( nRow ) ) != ::nRowSel
::nKeyNo += ::OnSkip( nPos - ::nRowSel )
::nRowSel := nPos
::Refresh()
::OnChange()
ENDIF
RETURN Nil
Creo que no entiendo bien el tema de méthodos de una Clase derivada...
En cambio... cuando lo que hago es según lo que me apuntaste en otro post, desde un Form...
//---------------------------------------------------------- --------------------
METHOD FormShow( oSender ) CLASS TForm1
::oArrayBrowse1:OnRClick := "xDBBrowse1RClick"
RETURN Nil
//---------------------------------------------------------- --------------------
METHOD xDBBrowse1RClick( oSender, nFlags, nRow, nCol ) CLASS TForm1
LOCAL nPos
WITH OBJECT ::oArrayBrowse1
IF ( nPos := :MouseRowPos( nRow ) ) != :nRowSel
:nKeyNo += :OnSkip( nPos - :nRowSel )
:nRowSel := nPos
:Refresh()
:OnChange()
ENDIF
END
RETURN Nil
Esto si funciona correctamente !!!
Gracias.
Un Saludo,
Xevi.
--
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Derivar de una Clase... TBrowse.

Mensaje por jfgimenez »

Xevi,
Persiste error al derivar...
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lAutoHScroll INIT .F.
PROPERTY lAutoVScroll INIT .F.
PROPERTY lVScroll INIT .T.
PROPERTY lHScroll INIT .F.
ENDCLASS
La barra Vertical no se visualiza aunque fuerce lVScroll a .T.
Para que se fuerce la barra Vertical, tengo que poner oSender:lVScroll := .T., en el método OnCreate del Browse.
La barra Horizontal si que funciona y coje el valor de lHScroll al derivar de xBrowse.
Estas propiedades se han cambiado. lAutoHScroll y lAutoVScroll se han eliminado, y las otras dos pueden tener ahora los valores: bsAUTO, bsYES o bsNO
--
Un saludo,
José F. Giménez
--
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Derivar de una Clase... TBrowse.

Mensaje por Xevi »

Jose,
Bien, pero lVScroll sigue sin funcionar al derivar directamente!!!
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lVScroll INIT .bsYES
PROPERTY lHScroll INIT bsNO
ENDCLASS
lHScroll SI funciona, con los tres valores.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje news:43568f9b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
Xevi,
Persiste error al derivar...
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lAutoHScroll INIT .F.
PROPERTY lAutoVScroll INIT .F.
PROPERTY lVScroll INIT .T.
PROPERTY lHScroll INIT .F.
ENDCLASS
La barra Vertical no se visualiza aunque fuerce lVScroll a .T.
Para que se fuerce la barra Vertical, tengo que poner oSender:lVScroll := .T., en el método OnCreate del Browse.
La barra Horizontal si que funciona y coje el valor de lHScroll al derivar de xBrowse.
Estas propiedades se han cambiado. lAutoHScroll y lAutoVScroll se han eliminado, y las otras dos pueden tener ahora los valores: bsAUTO, bsYES o bsNO
--
Un saludo,
José F. Giménez
--
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Derivar de una Clase... TBrowse.

Mensaje por jfgimenez »

Xevi,
Bien, pero lVScroll sigue sin funcionar al derivar directamente!!!
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lVScroll INIT .bsYES
PROPERTY lHScroll INIT bsNO
ENDCLASS
lHScroll SI funciona, con los tres valores.
Ok, gracias. Vamos a revisarlo lo antes posible.
--
Un saludo,
José F. Giménez
--
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9469
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Derivar de una Clase... TBrowse.

Mensaje por ignacio »

Xevi,
Arreglado. Muchas gracias.
Un saludo,
"Xevi" <xevicomas@terra.es> escribió en el mensaje news:[email=435693da@ozsrvnegro.ozlan.local...]435693da@ozsrvnegro.ozlan.local...[/email]
Jose,
Bien, pero lVScroll sigue sin funcionar al derivar directamente!!!
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lVScroll INIT .bsYES
PROPERTY lHScroll INIT bsNO
ENDCLASS
lHScroll SI funciona, con los tres valores.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje news:43568f9b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
Xevi,
Persiste error al derivar...
CLASS TBrowse FROM xBrowse
PUBLISHED:
PROPERTY lAutoHScroll INIT .F.
PROPERTY lAutoVScroll INIT .F.
PROPERTY lVScroll INIT .T.
PROPERTY lHScroll INIT .F.
ENDCLASS
La barra Vertical no se visualiza aunque fuerce lVScroll a .T.
Para que se fuerce la barra Vertical, tengo que poner oSender:lVScroll := .T., en el método OnCreate del Browse.
La barra Horizontal si que funciona y coje el valor de lHScroll al derivar de xBrowse.
Estas propiedades se han cambiado. lAutoHScroll y lAutoVScroll se han eliminado, y las otras dos pueden tener ahora los valores: bsAUTO, bsYES o bsNO
--
Un saludo,
José F. Giménez
--
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder