No artigo de hoje, vamos responder a dúvida de alguns alunos, onde ao criar uma grid, não aparece a coluna de legenda.
Recentemente nos perguntaram, que ao utilizar classes como FWMarkBrowse e FWBrowse, mesmo acionando o método AddLegend, na tela não é exibido (ao menos no começo dela).
Similar ao print abaixo:
O que acontece pessoal, é que provavelmente, o AddLegend ta sendo acionado após o SetColumns. Então se formos olhar na tela, a coluna de legenda ficou no final:
Para resolver então, acione o AddLegend antes do SetColumns.
Vejam como ficou:
Abaixo o trecho do antes:
oGetGrid := FWBrowse():New()
oGetGrid:DisableFilter()
oGetGrid:DisableConfig()
oGetGrid:DisableReport()
oGetGrid:DisableSeek()
oGetGrid:DisableSaveConfig()
oGetGrid:SetFontBrowse(oFontBtn)
oGetGrid:SetAlias(cAliasTab)
oGetGrid:SetDataTable()
oGetGrid:SetEditCell(.T., {|| .T.})
oGetGrid:lHeaderClick := .F.
//Define as colunas e depois a legenda
oGetGrid:SetColumns(aColunas)
oGetGrid:AddLegend(cAliasTab + "->XXQUANTI == 0", "YELLOW", "Quantidade zerada")
oGetGrid:AddLegend(cAliasTab + "->XXQUANTI < 0", "RED", "Quantidade menor que zero")
oGetGrid:AddLegend(cAliasTab + "->XXQUANTI > 0", "GREEN", "Quantidade maior que zero")
oGetGrid:SetOwner(oPanGrid)
oGetGrid:SetDelete(.T., {|| fApagaLin()})
oGetGrid:Activate()
Abaixo o trecho da correção:
oGetGrid := FWBrowse():New()
oGetGrid:DisableFilter()
oGetGrid:DisableConfig()
oGetGrid:DisableReport()
oGetGrid:DisableSeek()
oGetGrid:DisableSaveConfig()
oGetGrid:SetFontBrowse(oFontBtn)
oGetGrid:SetAlias(cAliasTab)
oGetGrid:SetDataTable()
oGetGrid:SetEditCell(.T., {|| .T.})
oGetGrid:lHeaderClick := .F.
//Define primeiro as legendas e depois sim as colunas
oGetGrid:AddLegend(cAliasTab + "->XXQUANTI == 0", "YELLOW", "Quantidade zerada")
oGetGrid:AddLegend(cAliasTab + "->XXQUANTI < 0", "RED", "Quantidade menor que zero")
oGetGrid:AddLegend(cAliasTab + "->XXQUANTI > 0", "GREEN", "Quantidade maior que zero")
oGetGrid:SetColumns(aColunas)
oGetGrid:SetOwner(oPanGrid)
oGetGrid:SetDelete(.T., {|| fApagaLin()})
oGetGrid:Activate()
Bom pessoal, por hoje é só.
Um grande abraço.


