Como excluir um estilo (style) de um objeto ?

Post Reply
Rossine
Posts: 343
Joined: Tue Oct 11, 2005 11:33 am

Como excluir um estilo (style) de um objeto ?

Post by Rossine »

Olá Antonio,

Mudando a classe xbrowse eu consegui inserir um novo estilo "style" usando resource, mas Como faço para Excluir um determinado estilo "style" de um objeto ?

Abaixo a mudança que fiz:

Code: Select all


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

METHOD CreateFromResource( nId ) CLASS TXBrowse

   if ::lCreated
      return Self
   endif

   #ifdef __XPP__
      DEFAULT ::lRegistered := .f.
   #endif

   ::nId := nId

   ::Register( nOr( CS_VREDRAW, CS_HREDRAW, CS_DBLCLKS ) )

   if ::lVScroll  && Rossine 05/01/08
      ::nStyle := nOr( ::nStyle, WS_VSCROLL )
   else
**    Tirar o Style WS_VSCROLL definido de dentro do arquivo .RC
      ::nStyle := tirar????( ::nStyle, WS_VSCROLL )
   endif

   if ::lHScroll  && Rossine 05/01/08
      ::nStyle := nOr( ::nStyle, WS_HSCROLL )
   else
**    Tirar o Style WS_VSCROLL definido de dentro do arquivo .RC
      ::nStyle := tirar????( ::nStyle, WS_HSCROLL )
   endif

   ::oWnd:DefControl( Self )

return Self

Gracias,

Rossine.
User avatar
mmercado
Posts: 782
Joined: Wed Dec 19, 2007 7:50 am
Location: Salamanca, Gto., México

Post by mmercado »

Hola:

Podría ser:

::nStyle := nAnd( ::nStyle, nNot( WS_VSCROLL ) )

Saludos.

Manuel Mercado
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Manuel,

En un sólo paso:

::nStyle := nXor( ::nStyle, WS_VSCROLL )
regards, saludos

Antonio Linares
www.fivetechsoft.com
Rossine
Posts: 343
Joined: Tue Oct 11, 2005 11:33 am

Post by Rossine »

Olá Maestros :D

Gracias por responderem, mas não funcionou.

Veja o programa que montei para teste:

Code: Select all


#include "FiveWin.ch"
#include "xbrowse.ch"

function main

   local oDlg, oBrw

   DEFINE DIALOG oDlg RESOURCE "TEST"

   oBrw := TXBrowse():New( odlg )

   oBrw:lHScroll := .f.
   oBrw:lVScroll := .t.

   oBrw:CreateFromResource( 101 )

   oBrw:SetArray( { { "first", "row" }, { "second", "row" } } )
   oBrw:aCols[ 1 ]:cHeader = "An array"
   oBrw:aCols[ 2 ]:cHeader = "test"
   oBrw:aCols[ 1 ]:bClrStd = { || { CLR_BLACK, CLR_WHITE } } 
   oBrw:aCols[ 2 ]:bClrStd = { || { CLR_BLACK, CLR_WHITE } } 

   ACTIVATE DIALOG oDlg ;
      ON INIT ( oBrw:lHScroll := .f., oBrw:SetColor( CLR_BLACK, CLR_WHITE ) )

RETURN NIL

Code: Select all

TEST DIALOG 6, 15, 306, 227
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "TXBrowse demo"
FONT 8, "MS Sans Serif"
{
 DEFPUSHBUTTON "OK", IDOK, 252, 211, 50, 14
 CONTROL "", 101, "TXBrowse", 0 | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP, 4, 5, 297, 202
}
Vejam que em .RC eu tenho "WS_VSCROLL | WS_HSCROLL" mas não quero que o scroll horinzontal "oBrw:lHScroll := .f." seja visível ao iniciar o programa.

Se eu não defino em .RC "WS_VSCROLL | WS_HSCROLL" mas defino "oBrw:lVScroll := .t." o scroll vertical é mostrado.

Gracias mais uma vez :wink:

Rossine.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Rossine,

Prueba así:

Code: Select all

   ACTIVATE DIALOG oDlg ; 
      ON INIT ( oBrw:oHScroll:SetRange( 0, 0 ), oBrw:SetColor( CLR_BLACK, CLR_WHITE ) )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Post by karinha »

OU, TENHA DUAS DIALOGS, UMA COM SCROLL E OUTRA SEM.

QUANDO ENTRAR NO PROGRAMA, ATIVE A DIALOG SEM SCROLL, DEPOIS DE FAZER O QUERES, TROQUE PELA QUE TEM SCROLL.
João Santos - São Paulo - Brasil
Rossine
Posts: 343
Joined: Tue Oct 11, 2005 11:33 am

Post by Rossine »

Olá Antonio,

Para funcionar tive que incluir também bPainted pois quando o browse é pintado, o scroll horizontal aparece na tela.

O exemplo abaixo funcionou:

Code: Select all

#include "FiveWin.ch"
#include "xbrowse.ch"

function main

   local oDlg, oBrw

   DEFINE DIALOG oDlg RESOURCE "TEST"

   oBrw := TXBrowse():New( odlg )

   oBrw:lHScroll := .f.
   oBrw:lVScroll := .t.

   oBrw:CreateFromResource( 101 )

   oBrw:SetArray( { { "first", "row" }, { "second", "row" } } )
   oBrw:aCols[ 1 ]:cHeader = "An array"
   oBrw:aCols[ 2 ]:cHeader = "test"
   oBrw:aCols[ 1 ]:bClrStd = { || { CLR_BLACK, CLR_WHITE } } 
   oBrw:aCols[ 2 ]:bClrStd = { || { CLR_BLACK, CLR_WHITE } } 
 
   oDlg:bInit    := { || oBrw:SetColor( CLR_BLACK, CLR_WHITE ) }

   oDlg:bpainted := { || ( iif( !oBrw:lHScroll, oBrw:oHScroll:SetRange( 0, 0 ), NIL ), ;
                           iif( !oBrw:lVScroll, oBrw:oVScroll:SetRange( 0, 0 ), NIL ), ) }

   ACTIVATE DIALOG oDlg

RETURN NIL
Gracias,

Rossine.
Post Reply