Possibilidade de um Botão em um Header de um ListBox.

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

João Eduardo
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 28 Jul 2021 18:25
Localização: Paracatu/MG

Possibilidade de um Botão em um Header de um ListBox.

Mensagem por João Eduardo »

Boa Noite pessoal, gostaria de compartilhar uma dúvida aqui com vocês que estou tendo, estou criando uma ListBox e nesta ListBox, gostaria de saber se existe a possibilidade de colocar alguns botões nos campos "Headers" para caso o usuário clique, por exemplo, ordene o conteúdo da lista por sequência alfabética caso o campo seja uma descrição e por valor caso o campo seja numeral, até o momento, eu consegui inserir uma imagem .bmp no header para o clique do usuário, contudo, não consegui até o momento, atribuir essa imagem como um botão para clique, vocês sabem uma forma de fazer isto?
-Código do List Box

Código: Selecionar todos

oBotao:=LoadBitmap(GetResources(),"TESTE")
Redefine ListBox oBrwIce;
         Fields aTmpIce[oBrwIce:nAt,25],;
                Transf(aTmpIce[oBrwIce:nAt,02],"@9"),;
                Transf(aTmpIce[oBrwIce:nAt,03],"@!"),;
                aTmpIce[oBrwIce:nAt,11],;
                Left(aTmpIce[oBrwIce:nAt,04],34),;
                Transf(aTmpIce[oBrwIce:nAt,05],"@!"),;
                Transf(aTmpIce[oBrwIce:nAt,06],"@!XX"),;
                Transf(aTmpIce[oBrwIce:nAt,09],"@e 999999.999"),;
                Transf(aTmpIce[oBrwIce:nAt,12],cMasQts),;
                Transf(aTmpIce[oBrwIce:nAt,28],cMasQts),;
                Transf(aTmpIce[oBrwIce:nAt,13],cMasQts),;
                If(Empty(aTmpIce[oBrwIce:nAt,10]),"",aStaCot[RetAchoice(aStaCot,Transf(aTmpIce[oBrwIce:nAt,10],"@!"),3)]),;
                Transf(aTmpIce[oBrwIce:nAt,14],cMasCef),;
                Transf(aTmpIce[oBrwIce:nAt,15],cMasCef),;
                Transf(aTmpIce[oBrwIce:nAt,16],cMasCef),;
                Cvod(aTmpIce[oBrwIce:nAt,26]),;
                Cvod(aTmpIce[oBrwIce:nAt,27]);
         Headers "S",;
                 "Item",;
                 "Produto",;
                 "Cód.Auxiliar",;
                 oBotao,;//"Descrição",;
                 "Marca",;
                 "Un.",;
                 "Quantidade",;
                 "Saldo",;
                 "Desconto",;
                 "Minimo",;
                 "Status Item",;
                 "Mel.Cot.1",;
                 "Mel.Cot.2",;
                 "Mel.Cot.3",;
                 "Última Compra",;
                 "Última Venda";
         FieldSizes 20,30,50,85,220,70,25,67,45,60,45,77,65,65,65,83,80;
         ID 202 Of oFldCot:aDialogs[2] UpDate
oBrwIce:SetArray(aTmpIce)
oBrwIce:aJustify  :={.F.,.F.,.F.,.F.,.F.,.F.,.F.,.T.,.T.,.T.,.T.,.F.,.F.,.F.,.F.,.F.,.F.}
oBrwIce:nLineStyle:=4
oBrwIce:bLDblClick:={|nRow,nCol|      IncCot((oBrwIce:nAt=Len(aTmpIce)),Left(vStaSin,1)="A",aTmpCot[oBrwCot:nAt,23])}
oBrwIce:bKeyChar  :={|nKey|If(nKey=13,IncCot((oBrwIce:nAt=Len(aTmpIce)),Left(vStaSin,1)="A",aTmpCot[oBrwCot:nAt,23]),Nil)}
oBrwIce:nClrText  :={||If(aTmpIce[oBrwIce:nAt,10]="X",CLR_HBLUE,If(aTmpIce[oBrwIce:nAt,10]="C",CLR_HRED,CLR_BLACK))}
oBrwIce:nClrPane  :={||If(oBrwIce:nAt%2==0,CLR_AZUL3,CLR_WHITE)}
Anexos
- Foto de exemplo da Imagem que consegui inserir no Header em anexo (ainda preciso ajustar a dimensão da imagem .bmp)
- Foto de exemplo da Imagem que consegui inserir no Header em anexo (ainda preciso ajustar a dimensão da imagem .bmp)
imagem_2022-06-27_182816683.png (7.53 KiB) Exibido 3667 vezes
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Possibilidade de um Botão em um Header de um ListBox.

Mensagem por Kapiaba »

Bom dia. Bem vindo. Veja \samples,

TESTLBX2.PRG
TESTLBX5.PRG

Qualquer coisa, thamus aki.

Regards, saludos.

Joao Santos - Sao Paulo / Brasil.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Possibilidade de um Botão em um Header de um ListBox.

Mensagem por Kapiaba »

P.S.: Se quiser algo mais sofisticado, use a XBROWSE(), muito melhor e super moderna.

Abs.

Regards, saludos.
João Eduardo
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 28 Jul 2021 18:25
Localização: Paracatu/MG

Possibilidade de um Botão em um Header de um ListBox.

Mensagem por João Eduardo »

Fala Kapiaba, consegui aplicar oque precisava no Xbrowse(), contudo, vendo na documentação, não consegui localizar como ajustar a cor do texto de cada linha, pois no sistema que trabalho, é comum um Ex: Item quando está cancelado, vir com as fontes na cor azul por exemplo, é possível usando o Xbrowse?
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Possibilidade de um Botão em um Header de um ListBox.

Mensagem por Kapiaba »

Bom dia.
Veja se ajuda:

Código: Selecionar todos

// Cores na xBrowse
static function BrwColors( oBrw, lFoot )

   local cClrBack
   DEFAULT lFoot          := .F.

   oBrw:l2007             := .F.
   oBrw:nRowHeight        := 24
   oBrw:nHeaderHeight     := 24 
   oBrw:lFooter               := lFoot
   
   //oBrw:lRecordSelector     := .F.
   //oBrw:lColDividerComplete := .F.
   //oBrw:lRowDividerComplete := .F.
   
   oBrw:lFlatStyle        := .T.
   oBrw:bClrHeader        := { || { CLR_BLACK, CLR_WHITE, CLR_WHITE } } //RGB( 232, 255, 232 ), RGB( 232, 255, 232 ) }}
   oBrw:lFullGrid         := .F.
   oBrw:nRowDividerStyle  := LINESTYLE_NOLINES //DARKGRAY  //LINESTYLE_LIGHTGRAY      //
   oBrw:nColDividerStyle  := LINESTYLE_NOLINES //LIGHTGRAY // LINESTYLE_NOLINES

   oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW
   oBrw:bClrStd = { || If( oBrw:KeyNo() % 2 == 0, ;
                         { If( ( oBrw:cAlias )->( Deleted() ), CLR_HRED, CLR_BLUE ),;
                           RGB( 198, 255, 198 ) }, ;
                         { If( ( oBrw:cAlias )->( Deleted() ), CLR_HRED, CLR_BLUE ),;
                           RGB( 232, 255, 232 ) } ) }
   oBrw:bClrSel = { || { If( ( oBrw:cAlias )->( Deleted() ), CLR_HRED, CLR_WHITE ),;
                           RGB( 34, 177, 76 ) } } //RGB( 0x33, 0x66, 0xCC ) } }
   
   cClrBack = Eval( oBrw:bClrSelFocus )[ 2 ]
   oBrw:bClrSelFocus  := { || { If( ( oBrw:cAlias )->( Deleted() ), CLR_HRED, CLR_WHITE ),;
                              cClrBack } }
   oBrw:SetColor( CLR_BLUE, RGB( 232, 255, 232 ) )

   oBrw:SetFont( oFont1 )

return nil
Regards, saludos.
João Eduardo
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 28 Jul 2021 18:25
Localização: Paracatu/MG

Possibilidade de um Botão em um Header de um ListBox.

Mensagem por João Eduardo »

Consegui fazer kapiaba, tomou certo tempo mas funcionou perfeitamente! restando apenas alguns ajustes, agradeço demais pela atenção!
Responder