Como excluir um estilo (style) de um objeto ?

Como excluir um estilo (style) de um objeto ?

Postby Rossine » Sat Jan 05, 2008 12:46 pm

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  Expand view

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

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.
Rossine
 
Posts: 344
Joined: Tue Oct 11, 2005 11:33 am

Postby mmercado » Sun Jan 06, 2008 5:11 am

Hola:

Podría ser:

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

Saludos.

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

Postby Antonio Linares » Sun Jan 06, 2008 6:27 am

Manuel,

En un sólo paso:

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41323
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Rossine » Mon Jan 07, 2008 11:52 am

Olá Maestros :D

Gracias por responderem, mas não funcionou.

Veja o programa que montei para teste:

Code: Select all  Expand view

#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  Expand view
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.
Rossine
 
Posts: 344
Joined: Tue Oct 11, 2005 11:33 am

Postby Antonio Linares » Mon Jan 07, 2008 1:17 pm

Rossine,

Prueba así:
Code: Select all  Expand view
   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
Antonio Linares
Site Admin
 
Posts: 41323
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby karinha » Mon Jan 07, 2008 1:26 pm

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 - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7239
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Postby Rossine » Mon Jan 07, 2008 3:47 pm

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  Expand view
#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.
Rossine
 
Posts: 344
Joined: Tue Oct 11, 2005 11:33 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 12 guests

cron