Clipper On Line • Ver Tópico - Browse alternando estilo de fonte nas linhas

Browse alternando estilo de fonte nas linhas

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Browse alternando estilo de fonte nas linhas

Mensagempor claudiochaves » 29 Jun 2020 18:08

Oi Pessoal, boa tarde, alguém teria algum exemplo de como fazer um browse aonde as linhas usando uma mesma fonte possa ter estilos variados. Por exemplo, uma linha em com todos os campos tachados, outra em italico e outra normal?

Tentei fazer com o seguinte codigo, mas da errado.

Agradeço, abraços,

Claudio

function teste_evento()
   Private vArrLogEvento
   Private oBrwEventos
   vArrLogEvento := {    { date() , time() , "usuario" , "Rotina Disponivel  " , "000" } ,;
                  { date() , time() , "usuario" , "Rotina Disponivel  " , "001" } ,;
                  { date() , time() , "usuario" , "Rotina Disponivel  " , "002" } ,;
                  { date() , time() , "usuario" , "Rotina Disponivel  " , "003" } ,;
                  { date() , time() , "usuario" , "Rotina Disponivel  " , "004" } ,;
                  { date() , time() , "usuario" , "Rotina Disponivel  " , "005" }   }
   INIT DIALOG oDlgWeb TITLE "...::: TESTE :::..." SIZE 800,400 NOEXIT STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+WS_MINIMIZEBOX+WS_MAXIMIZEBOX+DS_CENTER
      @ 15,80 BROWSE oBrwEventos ARRAY SIZE 700,300 STYLE WS_TABSTOP ON INIT  {|| xxx_LogEvento_Rfs() }
         *'oBrwEventos:lDispSep := .F. desliga linha separadora do browse
   ACTIVATE DIALOG oDlgWeb
Return .t.   

Function xxx_LogEvento_Rfs()
   CreateArList( oBrwEventos, vArrLogEvento )
   RCG_SqlGridTbl_FmtColuna( oBrwEventos ,  1 , "Data"      ,  50 , Nil , .T. )
   RCG_SqlGridTbl_FmtColuna( oBrwEventos ,  2 , "Hora"      ,  50 , Nil , .T. )
   RCG_SqlGridTbl_FmtColuna( oBrwEventos ,  3 , "Usuário"   ,  80 , Nil , .T. )
   RCG_SqlGridTbl_FmtColuna( oBrwEventos ,  4 , "Evento"    , 150 , Nil , .T. )
   RCG_SqlGridTbl_FmtColuna( oBrwEventos ,  5 , "Nível"     ,  30 , Nil , .f. )
   For vTmpRel=1 to LEN(oBrwEventos:aColumns)
      oBrwEventos:aColumns[vTmpRel]:oFont       := xxx_FonteCor(oBrwEventos)
   Next
   oBrwEventos:Top()
   oBrwEventos:refresh()
Return .t.

Function xxx_FonteCor(pObjBloco_Grid)
   Local vRet_GridCor
   if     pObjBloco_Grid:aArray[pObjBloco_Grid:nCurrent, 5] = "003" ; vRet_GridCor := HFont():Add( "Arial"       , 0 , -11 , 400,1,1,1)
   Elseif pObjBloco_Grid:aArray[pObjBloco_Grid:nCurrent, 5] = "005" ; vRet_GridCor := HFont():Add( "Arial"       , 0 , -11 , 400,1,1,1)
   Else                                                             ; vRet_GridCor := HFont():Add( "Arial"       , 0 , -11 , 400,,,)
   Endif
Return vRet_GridCor   
Claudio Chaves
Desenvolvedor
claudiochaves
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 28 Jul 2017 15:48
Cidade/Estado: campinas/sp
Curtiu: 19 vezes
Mens.Curtidas: 1 vez

Browse alternando estilo de fonte nas linhas

Mensagempor Fernando queiroz » 29 Jun 2020 21:19

TENTE ALGO ASSIM

bColorBlock := {|| IIF(oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 14] = 1, {255, 16777215 ,16777215,255 },{0,16777215,, }) }
FOR EACH oColuna IN oBrowse1:aColumns
oColuna:bColorBlock := bColorBlock
NEXT

Neste exemplo dependendo da coluna 14 eu coloco em vermelho ou em preto todos os campos do browse

neste exemplo eu mudo de cor somente um campo dependendo da condicao

oBrowse1:aColumns[5]:bColorBlock :={|| IIF(oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 6] < M->DAT_HOJE .AND. oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 15] = 0,{255, 16777215 ,16777215,255 },;
IIF(oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 6] > M->DAT_HOJE-1 .AND. oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 15] = 0,{16744448, 16777215 ,16777215,16744448 } ,{0,16777215,, })) }

uso as cores vermelho azul ou preto
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Browse alternando estilo de fonte nas linhas

Mensagempor claudiochaves » 30 Jun 2020 09:11

Fernando queiroz escreveu:TENTE ALGO ASSIM

bColorBlock := {|| IIF(oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 14] = 1, {255, 16777215 ,16777215,255 },{0,16777215,, }) }
FOR EACH oColuna IN oBrowse1:aColumns
oColuna:bColorBlock := bColorBlock
NEXT

Neste exemplo dependendo da coluna 14 eu coloco em vermelho ou em preto todos os campos do browse

neste exemplo eu mudo de cor somente um campo dependendo da condicao

oBrowse1:aColumns[5]:bColorBlock :={|| IIF(oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 6] < M->DAT_HOJE .AND. oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 15] = 0,{255, 16777215 ,16777215,255 },;
IIF(oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 6] > M->DAT_HOJE-1 .AND. oDlg:oBrowse1:aArray[ oDlg:oBrowse1:nCurrent, 15] = 0,{16744448, 16777215 ,16777215,16744448 } ,{0,16777215,, })) }

uso as cores vermelho azul ou preto


Obrigado Fernando, com a cor eu já consegui fazer. Eu gostaria mesmo é de mudar algumas linhas do browse, colocando estilo na fonte para destacar a linha. Minha ideia é um item cancelado aparecer com o estilo tachado e um item normal sem o tachar.

Agradeço de qualquer forma, vou continuar pesquisando, abraços
Claudio Chaves
Desenvolvedor
claudiochaves
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 28 Jul 2017 15:48
Cidade/Estado: campinas/sp
Curtiu: 19 vezes
Mens.Curtidas: 1 vez

Browse alternando estilo de fonte nas linhas

Mensagempor Itamar M. Lins Jr. » 30 Jun 2020 10:49

Ola!
Tá usando qual versão da Hwgui ?
Na do 2.22 tem estilos, para os 3. Cabeçalho, corpo e rodapé.
Não me aprofundei nisso, mas vi uns exemplos que fica igual aos menus do Office o cabeçalho.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Browse alternando estilo de fonte nas linhas

Mensagempor claudiochaves » 30 Jun 2020 11:56

Itamar M. Lins Jr. escreveu:Ola!
Tá usando qual versão da Hwgui ?
Na do 2.22 tem estilos, para os 3. Cabeçalho, corpo e rodapé.
Não me aprofundei nisso, mas vi uns exemplos que fica igual aos menus do Office o cabeçalho.

Saudações,
Itamar M. Lins Jr.


Oi Itamar, desejo que esteja bem.
Ainda utilizo a Hwgui 2.17, estou vendo para atualizar as versões, obrigado pela dica, vou ver o que mudou na 2.22 para ter estilos e ver se consigo adaptar por enquanto até eu concluir a atualização de versão.
abraços,
Claudio Chaves
Desenvolvedor
claudiochaves
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 28 Jul 2017 15:48
Cidade/Estado: campinas/sp
Curtiu: 19 vezes
Mens.Curtidas: 1 vez

Browse alternando estilo de fonte nas linhas

Mensagempor Itamar M. Lins Jr. » 30 Jun 2020 12:37

Ola!
#include "hwgui.ch"
Function Test()
Local oDlg, oBrw, oBtnOk, oStyle := HStyle():New( { 0xffffff, 0xbbbbbb }, 1 ), oPen
Local aSample := { {"Alex",17,12600}, {"Victor",42,1600}, {"Pyotr",56,45500}, ;
      {"Sergei",28,14800}, {"Ivan",26,21300} }
Local bCol1 := {|o,h,x1,y1,x2,y2|
   oStyle:Draw( h,x1,y1,x2,y2 )
   RETURN Nil
}
Local bBack := {|o,h,x1,y1,x2,y2,n|
   Local y := y1 + Int( (y2-y1)/2 )
   // Draw a column header background
   hwg_Fillrect( h, x1, y1, x2, y, oBrw:brush:handle )
   oStyle:Draw( h, x1, y, x2, y2 )
   IF n == 4
      // While drawing the 4-th column header output a "Super header" for 3-th and 4-th columns
      hwg_Settransparentmode( h, .T. )
      hwg_Drawtext( h, "Some data", x1-oBrw:aColumns[3]:width, y1 + 2, x2, y-2, DT_CENTER )
      hwg_Settransparentmode( h, .F. )
   ENDIF
   RETURN Nil
}
Local bDrawOrd := {|o,h,x1,y1,x2,y2|
   IF o:cargo == 1
      // if sorted ascending
      hwg_Selectobject( h, oPen:handle )
      hwg_DrawLine( h, x2-16, y2-14, x2-12, y2-8 )
      hwg_DrawLine( h, x2-12, y2-8, x2-8, y2-14 )
   ELSEIF o:cargo == 2
      // if sorted descending
      hwg_Selectobject( h, oPen:handle )
      hwg_DrawLine( h, x2-16, y2-8, x2-12, y2-14 )
      hwg_DrawLine( h, x2-12, y2-14, x2-8, y2-8 )
   ENDIF
   RETURN Nil
}

   oPen := HPen():Add( BS_SOLID, 2, 0 )

   INIT DIALOG oDlg TITLE "Browse" ;
         AT 0, 0 SIZE 380, 300 BACKCOLOR 0xeeeeee;
         FONT HFont():Add( "MS Sans Serif",0,-15 )

   @ 20,16 SAY "Press on a column head to change order" SIZE 340,24 ;
         TRANSPARENT STYLE DT_CENTER COLOR 8404992
   @ 20,40 BROWSE oBrw ARRAY SIZE 340,200 STYLE WS_BORDER + WS_VSCROLL ;
         ON SIZE ANCHOR_TOPABS + ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS
   oBrw:oStyleHead := oStyle
   oBrw:bcolorSel := 0xeeeeee
   oBrw:tcolorSel := 0
   oBrw:aArray := aSample

   // Increase Left, top and bottom padding
   oBrw:aPadding[1] := oBrw:aPadding[2] := oBrw:aPadding[4] := 8
   oBrw:aHeadPadding[2] := oBrw:aHeadPadding[4] := 4

   //First column we draw ourselves, using the nCol1 codeblock, so we may to not set the
   // column codeblock.
   oBrw:AddColumn( HColumn():New( "",,"C",2,0 ) )
   oBrw:aColumns[1]:setPaintCB( PAINT_LINE_ALL, bCol1 )

   oBrw:AddColumn( HColumn():New( "Name",{|v,o|o:aArray[o:nCurrent,1]},"C",16,0 ) )
   oBrw:AddColumn( HColumn():New( ";Age",{|v,o|o:aArray[o:nCurrent,2]},"N",6,0 ) )
   oBrw:AddColumn( HColumn():New( ";Salary",{|v,o|o:aArray[o:nCurrent,3]},"N",8,0 ) )

   oBrw:aColumns[3]:cGrid := "W;WN"
   oBrw:aColumns[4]:cGrid := "E;WEN"

   // Add a codeblock to draw column hraders bacground
   oBrw:aColumns[3]:setPaintCB( PAINT_HEAD_BACK, bBack )
   oBrw:aColumns[4]:setPaintCB( PAINT_HEAD_BACK, bBack )

   // Add a codeblock to draw the current order
   oBrw:aColumns[2]:setPaintCB( PAINT_HEAD_ITEM, bDrawOrd )
   oBrw:aColumns[3]:setPaintCB( PAINT_HEAD_ITEM, bDrawOrd )
   oBrw:aColumns[4]:setPaintCB( PAINT_HEAD_ITEM, bDrawOrd )

   // Set a codeblock to change order
   oBrw:aColumns[2]:bHeadClick := oBrw:aColumns[3]:bHeadClick := ;
      oBrw:aColumns[4]:bHeadClick := {|o,n|onHeadClick(o,n)}
   // The :cargo variable exists in all HwGUI objects and isn't used by HwGUI itself.
   // You may use it as you need in your programs.
   // We use the column's :cargo here to keep info about the current order:
   // 0 - not sorted by this column, 1 - sorted ascending, 2 - sorted descending
   oBrw:aColumns[2]:cargo := oBrw:aColumns[3]:cargo := oBrw:aColumns[4]:cargo := 0

   @ 128,260 OWNERBUTTON oBtnOk SIZE 100,32 ;
         TEXT "Ok" ;
         ON SIZE ANCHOR_LEFTABS + ANCHOR_RIGHTABS + ANCHOR_BOTTOMABS ;
         ON CLICK {||hwg_EndDialog()}
   oBtnOk:aStyle := { HStyle():New( {0xffffff,0xdddddd}, 1,, 1 ), ;
            HStyle():New( {0xffffff,0xdddddd}, 2,, 1 ), ;
            HStyle():New( {0xffffff,0xdddddd}, 1,, 2, 8421440 ) }

   ACTIVATE DIALOG oDlg

   oPen:Release()

Return Nil

Function onHeadClick( oBrw, nCol )
Local no := Ascan( oBrw:aColumns, {|o|o:cargo>0}, 2 )

   // no is an index of a column, used in sorting
   IF no == 0
      oBrw:aColumns[nCol]:cargo := 1
   ELSEIF no == nCol
      IF oBrw:aColumns[no]:cargo == 1
         oBrw:aColumns[no]:cargo := 2
      ELSE
         oBrw:aColumns[no]:cargo := 1
      ENDIF
   ELSE
      oBrw:aColumns[no]:cargo := 0
      oBrw:aColumns[nCol]:cargo := 1
   ENDIF

   no := nCol
   nCol --
   IF oBrw:aColumns[no]:cargo == 1
      oBrw:aArray := ASort( oBrw:aArray,,, {|z,y| z[nCol] < y[nCol] } )
   ELSE
      oBrw:aArray := ASort( oBrw:aArray,,, {|z,y| z[nCol] > y[nCol] } )
   ENDIF
   oBrw:Refresh()
Return Nil

Sem título.png


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Browse alternando estilo de fonte nas linhas

Mensagempor Itamar M. Lins Jr. » 30 Jun 2020 13:07

Ola!
Não achei... Tem até mais complicado com bitmap, mas trocar a fonte de uma coluna não achei.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Browse alternando estilo de fonte nas linhas

Mensagempor claudiochaves » 30 Jun 2020 14:35

Itamar M. Lins Jr. escreveu:Ola!
Não achei... Tem até mais complicado com bitmap, mas trocar a fonte de uma coluna não achei.

Saudações,
Itamar M. Lins Jr.


Eu até consegui mudar a fonte da linha com o codigo :

oBrwEventos:aColumns[1]:oFont := HFont():Add( "Arial"       , 0 , -11 , 400,1,1,1) 


o problema é que muda todas as linhas e não mantem.
Claudio Chaves
Desenvolvedor
claudiochaves
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 29
Data de registro: 28 Jul 2017 15:48
Cidade/Estado: campinas/sp
Curtiu: 19 vezes
Mens.Curtidas: 1 vez

Browse alternando estilo de fonte nas linhas

Mensagempor Fernando queiroz » 30 Jun 2020 14:43

claudiochaves escreveu:
Itamar M. Lins Jr. escreveu:Ola!
Não achei... Tem até mais complicado com bitmap, mas trocar a fonte de uma coluna não achei.

Saudações,
Itamar M. Lins Jr.


Eu até consegui mudar a fonte da linha com o codigo :

oBrwEventos:aColumns[1]:oFont := HFont():Add( "Arial"       , 0 , -11 , 400,1,1,1) 


o problema é que muda todas as linhas e não mantem.


estive olhando no HBROWSE.PRG da HWGUI e o :oFont muda de todo o browse ou herda da tela, realmente não tem como mudar , por isso eu optei por cores.
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Browse alternando estilo de fonte nas linhas

Mensagempor Fernando queiroz » 30 Jun 2020 14:45

tela.jpg
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Browse alternando estilo de fonte nas linhas

Mensagempor Fernando queiroz » 30 Jun 2020 14:47

ou definindo uma linha toda para uma determinada condição

tela.jpg
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes




Retornar para HwGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro