Como mudar a cor da linha ativa em MVC

Você já precisou deixar uma linha de uma grid em MVC com uma cor diferente? Iremos demonstrar no artigo de hoje.

Quando montamos uma tela em MVC, alguns usuários podem sentir algumas diferenças com as telas clássicas. Como por exemplo, na utilização de grids, as linhas não são pintadas automaticamente, conforme o print abaixo:

Exemplo de antes da alteração

Notaram que ele deixa apenas uma borda de qual campo foi clicado? E se o usuário quisesse que a linha inteira fosse pintada? Como poderíamos fazer isso?

Nós podemos utilizar o método SetViewProperty dentro da nossa ViewDef, passando o nome da nossa grid, e o CSS, modificando assim a cor da linha selecionada e da cor do texto (selection-background-color e selection-color respectivamente).

Então, nossa ViewDef, ficaria dessa forma:

Static Function ViewDef()
	Local oModel := FWLoadModel("zMVC02")
	Local oStruPai := FWFormStruct(2, cTabPai)
	Local oStruFilho := FWFormStruct(2, cTabFilho)
	Local oView

	//Cria a visualizacao do cadastro
	oView := FWFormView():New()
	oView:SetModel(oModel)
	oView:AddField("VIEW_ZD2", oStruPai, "ZD2MASTER")
	oView:AddGrid("VIEW_ZD3",  oStruFilho,  "ZD3DETAIL")

	//Agora define o CSS da grid
	oView:SetViewProperty("VIEW_ZD3", "SETCSS", {"QTableView { selection-background-color: #1C9DBD; selection-color: #FFFFFF; }"} )
	
	//... Continuação do seu código da View ...

Abaixo um print de como que fica com essa alteração, ao clicar em cima da linha.

Exemplo de depois da alteração

Para montagem desse artigo, usamos como referência uma resposta do Felipe Caiado Almeida no devforum.totvs.com.br.

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

5 Responses

  1. Irineu Filho disse:

    Atilio,
    É possível alterar a cor da linha de acordo com alguma regra ?

    No MsNewGetDados há a propriedade SetBlkBackColor onde conseguiria tratar a regra e retornar a cor.

    Existe algo nesses grids em MVC ?

  2. Irineu Filho disse:

    Valeu!
    Se achar algo e conseguir compartilhar será util.

  3. Bruno Romeiro Comin disse:

    Como sempre seus artigos são sensacionais, que pena que você tá com aquele probleminha e pode ser que não esteja aqui entre nós para colher os frutos do seu trabalho. Mas Deus é conosco!

Deixe uma resposta para Dan (Daniel Atilio)Cancelar resposta

Terminal de Informação