FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Borde de TBar
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Borde de TBar
Posted: Fri May 31, 2013 10:47 AM
Buenos dias
Se puede eliminar el borde negro que aparece en un TBar() ?

Code (fw): Select all Collapse
        oBar1 := TBar():NewAt( 2, 2, 110, 22, 16, 16, oBar, .F. , , )

        //oBar1:l2007   := .T.       //2010

        oBar1:nStyle      -= WS_BORDER

        oBar1:SetColor( RGB( 240, 240, 240 ), RGB(240, 240, 240 ) )
        oBar1:SetBrush( oBrush )
        oBar1:bRClicked  := { || .T. }


Asi, no funciona, ni poniendo el Brush, y color del mismo fondo que tiene el dialogo
He buscado por el foro y aqui se realizaba la misma pregunta

http://forums.fivetechsupport.com/viewtopic.php?f=3&t=26295&p=144661&hilit=border+TBar#p144661

Gracias
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 205
Joined: Fri Oct 07, 2005 05:07 PM
Re: Borde de TBar
Posted: Fri May 31, 2013 07:27 PM
Buenas

Puedes experimentar utilizar
Code (fw): Select all Collapse
ACTIVATE ...... ON INIT SetWindowLong( oBar1:hWnd, GWL_STYLE,;
                     nAnd( GetWindowLong( oBar1:hWnd, GWL_STYLE ), WS_BORDER) )
Saludos/regards

RenOmaS



skype: americo.balboa
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Borde de TBar
Posted: Fri May 31, 2013 08:26 PM

Buenas noches

He puesto:

define GWL_STYLE -16

Es correcto?
Efectivamente, me quita el Borde, pero tambien me borra los botones

Se me olvida alguna cosa?
Gracias por tu interés y tiempo
Saludos

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Borde de TBar
Posted: Fri May 31, 2013 08:37 PM
Cristobal.
Si haces este pequeña modificacion en la Class TBar, puedes lograrlo.
Code (fw): Select all Collapse
DATA   lBorder   //FranciscoA May, 31/2013

METHOD NewAt( nRow, nCol, nWidth, nHeight, nBtnWidth, nBtnHeight, oWnd, l3D,;
              cMode, oCursor, lBorder ) CLASS TBar    //FranciscoA May, 31/2013

   DEFAULT oWnd := GetWndDefault(), nBtnWidth := BAR_HEIGHT,;
           nBtnHeight := BAR_HEIGHT, nHeight := BAR_HEIGHT,;
           l3D := .f., cMode := "TOP", lBorder := .t.    //FranciscoA May, 31/2013

   //::nStyle      = nOR( WS_BORDER, WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN )
  ::nStyle      = if( lBorder, nOR( WS_BORDER, WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ), nOR( WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ) )  //FranciscoA May, 31/2013

//************************************************************************
La llamada sería:
   ACTIVATE DIALOG oDlg CENTERED ;
        ON INIT ( CreaBar(oBar,oDlg) )
return nil

function CreaBar(oBar,oDlg)
   oBar:=TBar():NewAt(20,360,200,28,28,28,oDlg,.f.,,,.f.)

   DEFINE BUTTON PROMPT "X1" OF oBar ACTION MsgInfo("hola") NOBORDER
   DEFINE BUTTON PROMPT "X2" OF oBar ACTION MsgInfo("hola de nuevo") NOBORDER

  // oBar:l2010 := .t.
  oBar:SetColor( 0, nRGB( 207, 221, 239 ) )   //tu color

return nil

Espero te sirva.
Saludos.
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Borde de TBar
Posted: Sat Jun 01, 2013 05:45 PM
Muchas gracias Francisco
Al final he optado por hacer una clases derivada de TBar siguiendo tus lineas
Code (fw): Select all Collapse
CLASS TBarC FROM TBar

CLASSDATA lRegistered AS LOGICAL   
DATA lBorder

METHOD New( oWnd, nBtnWidth, nBtnHeight, l3D, cMode, oCursor, l2007, l2010,;
            lBorder, bGrad ) CONSTRUCTOR
            
METHOD NewAt( nRow, nCol, nWidth, nHeight, nBtnWidth, nBtnHeight, oWnd, l3D,;
              cMode, oCursor, lBorder ) CONSTRUCTOR
                                 //Francisco A May, 31/2013
ENDCLASS


METHOD New( oWnd, nBtnWidth, nBtnHeight, l3D, cMode, oCursor, l2007, l2010,;
            lBorder ) CLASS TBarC

   local oRect

   DEFAULT oWnd := GetWndDefault(), nBtnWidth := BAR_HEIGHT,;
           nBtnHeight := BAR_HEIGHT, l3D := .f., cMode := "TOP", l2007 := .F.,;
           l2010 := .F., lBorder := .F.
           
   oRect = oWnd:GetCliRect()        

   ::nStyle = if( lBorder, nOR( WS_BORDER, WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ),;
                          nOR( WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ) )

    ::lBorder  = lBorder

.../...

.../...



METHOD NewAt( nRow, nCol, nWidth, nHeight, nBtnWidth, nBtnHeight, oWnd, l3D,;
              cMode, oCursor, lBorder ) CLASS TBarC
   local oRect
   
   DEFAULT oWnd := GetWndDefault(), nBtnWidth := BAR_HEIGHT,;
           nBtnHeight := BAR_HEIGHT, nHeight := BAR_HEIGHT,;
           l3D := .f., cMode := "TOP", lBorder := .f.    //FranciscoA May, 31/2013

   oRect = oWnd:GetCliRect()
   
  ::nStyle = if( lBorder, nOR( WS_BORDER, WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ),;
                          nOR( WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ) )
   
   ::lBorder     = lBorder

    .../...


Un saludo
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Borde de TBar
Posted: Sat Jun 01, 2013 08:20 PM

Muy interesante la solución de Cristóbal ...

Saludos

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Borde de TBar
Posted: Mon Jun 03, 2013 01:28 PM

Horacio
La idea es de Francisco
Como ya he mencionado en otro post, desde que empecé con FW, nunca he modificado las clases originales que aparecen en FW.
Prefiero crear clases propias heredadas de las originales con las modificaciones que necesito, así, si estas modificaciones aparecen en versiones posteriores, lo único que tengo que hacer es eliminar ese método "propio" de mi clase, hasta que pueda llegar a "eliminar" mis clases propias y usar las standard, que sería lo ideal, aunque comprendo que es muy dificil tener en cuenta las necesidades e ideas de cada uno de nosotros.
De esta manera también puedo usar las clases originales si las necesito y evaluar las que aparecen en nuevas versiones (cuando puedo actualizarme, claro :cry: )
Un saludo

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Borde de TBar
Posted: Mon Jun 03, 2013 01:56 PM

Cristóbal, sé que la solución a tu inquietud la resolvió Francisco pero me gustó como lo implementaste. Yo también he eliminado el borde en TBar, pero modificando la clase. Hacerlo como una clase derivada, además de ser practico, ya que no la modificamos, es muy elegante.

Saludos

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Borde de TBar
Posted: Sun Jul 20, 2014 09:45 AM
cnavarro wrote:Muchas gracias Francisco
Al final he optado por hacer una clases derivada de TBar siguiendo tus lineas
Code (fw): Select all Collapse
CLASS TBarC FROM TBar

CLASSDATA lRegistered AS LOGICAL   
DATA lBorder

METHOD New( oWnd, nBtnWidth, nBtnHeight, l3D, cMode, oCursor, l2007, l2010, l2013,;
            lBorder, bGrad ) CONSTRUCTOR
            
METHOD NewAt( nRow, nCol, nWidth, nHeight, nBtnWidth, nBtnHeight, oWnd, l3D,;
              cMode, oCursor, lBorder ) CONSTRUCTOR
                                 //Francisco A May, 31/2013
ENDCLASS


METHOD New( oWnd, nBtnWidth, nBtnHeight, l3D, cMode, oCursor, l2007, l2010,;
            lBorder ) CLASS TBarC

   local oRect

   DEFAULT oWnd := GetWndDefault(), nBtnWidth := BAR_HEIGHT,;
           nBtnHeight := BAR_HEIGHT, l3D := .f., cMode := "TOP", l2007 := .F.,;
           l2010 := .F., lBorder := .F.
           
   oRect = oWnd:GetCliRect()        

   ::nStyle = if( lBorder, nOR( WS_BORDER, WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ),;
                          nOR( WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ) )

    ::lBorder  = lBorder

.../...

.../...



METHOD NewAt( nRow, nCol, nWidth, nHeight, nBtnWidth, nBtnHeight, oWnd, l3D,;
              cMode, oCursor, lBorder ) CLASS TBarC
   local oRect
   
   DEFAULT oWnd := GetWndDefault(), nBtnWidth := BAR_HEIGHT,;
           nBtnHeight := BAR_HEIGHT, nHeight := BAR_HEIGHT,;
           l3D := .f., cMode := "TOP", lBorder := .f.    //FranciscoA May, 31/2013

   oRect = oWnd:GetCliRect()
   
  ::nStyle = if( lBorder, nOR( WS_BORDER, WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ),;
                          nOR( WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ) )
   
   ::lBorder     = lBorder

    .../...


Un saludo



Antonio, podría ser posible añadirlo a FWH?
Gracias
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Borde de TBar
Posted: Sun Oct 19, 2014 01:19 PM
cnavarro wrote:
cnavarro wrote:Muchas gracias Francisco
Al final he optado por hacer una clases derivada de TBar siguiendo tus lineas
Code (fw): Select all Collapse
CLASS TBarC FROM TBar

CLASSDATA lRegistered AS LOGICAL   
DATA lBorder

METHOD New( oWnd, nBtnWidth, nBtnHeight, l3D, cMode, oCursor, l2007, l2010, l2013,;
            lBorder, bGrad ) CONSTRUCTOR
            
METHOD NewAt( nRow, nCol, nWidth, nHeight, nBtnWidth, nBtnHeight, oWnd, l3D,;
              cMode, oCursor, lBorder ) CONSTRUCTOR
                                 //Francisco A May, 31/2013
ENDCLASS


METHOD New( oWnd, nBtnWidth, nBtnHeight, l3D, cMode, oCursor, l2007, l2010,;
            lBorder ) CLASS TBarC

   local oRect

   DEFAULT oWnd := GetWndDefault(), nBtnWidth := BAR_HEIGHT,;
           nBtnHeight := BAR_HEIGHT, l3D := .f., cMode := "TOP", l2007 := .F.,;
           l2010 := .F., lBorder := .F.
           
   oRect = oWnd:GetCliRect()        

   ::nStyle = if( lBorder, nOR( WS_BORDER, WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ),;
                          nOR( WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ) )

    ::lBorder  = lBorder

.../...

.../...



METHOD NewAt( nRow, nCol, nWidth, nHeight, nBtnWidth, nBtnHeight, oWnd, l3D,;
              cMode, oCursor, lBorder ) CLASS TBarC
   local oRect
   
   DEFAULT oWnd := GetWndDefault(), nBtnWidth := BAR_HEIGHT,;
           nBtnHeight := BAR_HEIGHT, nHeight := BAR_HEIGHT,;
           l3D := .f., cMode := "TOP", lBorder := .f.    //FranciscoA May, 31/2013

   oRect = oWnd:GetCliRect()
   
  ::nStyle = if( lBorder, nOR( WS_BORDER, WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ),;
                          nOR( WS_CHILD, WS_VISIBLE, WS_CLIPCHILDREN ) )
   
   ::lBorder     = lBorder

    .../...


Un saludo



Antonio, podría ser posible añadirlo a FWH?
Gracias


++1
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Borde de TBar
Posted: Sun Oct 19, 2014 06:53 PM

Implementado para FWH 14.09, gracias! :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion