Página 1 de 1

Cor na coluna de uma Grid

Enviado: 06 Nov 2012 17:37
por jjr_rs
Olá pessoal,

Estou montando um form e nele tenho uma Grid com 8 colunas. Nela irei ajustar os headers das colunas em tempo de execução, como descrito no exemplo abaixo:

Código: Selecionar todos

Form_Agenda.Grid_Agenda.Header(1) := "Hora"
Form_Agenda.Grid_Agenda.Header(2) := F_Headers( Form_Agenda.DP_Data.value )
Form_Agenda.Grid_Agenda.Header(3) := F_Headers( Form_Agenda.DP_Data.value + 2 )
Form_Agenda.Grid_Agenda.Header(4) := F_Headers( Form_Agenda.DP_Data.value + 3 )
Form_Agenda.Grid_Agenda.Header(5) := F_Headers( Form_Agenda.DP_Data.value + 4 )
Form_Agenda.Grid_Agenda.Header(6) := F_Headers( Form_Agenda.DP_Data.value + 5 )
Form_Agenda.Grid_Agenda.Header(7) := F_Headers( Form_Agenda.DP_Data.value + 6 )
Form_Agenda.Grid_Agenda.Header(8) := F_Headers( Form_Agenda.DP_Data.value + 7 )
Como podem notar, irei criar seu título (header) com a data informada + " - " + 3 primeiras letras do dia da semana referente.

Até aí tudo bem, mas minha dúvida começa na questão de, quando o dia da semana cair em um "sábado" ou "domingo" ("SAB" ou "DOM"), eu gostaria de mudar a cor da coluna inteira para chamar atenção do usuário. Existe essa possibilidade ???

Obs.: Moderador me desculpe se este tópico foi criado em um lugar errado, qualquer coisa me corrija.

Abraços a todos !

Cor na coluna de uma Grid

Enviado: 06 Nov 2012 20:49
por Pablo César
Acredito que agora com as novas versões do HMG que possui os recursos de GRID_GetColumnControlsEx o qual retorna um array dos controles como: aCOLUMNCONTROL, bDYNAMICBACKCOLOR, bDYNAMICFORECOLOR, bCOLUMNWHEN, bCOLUMNVALID, bONHEADCLICK, etc.

Tem um novo exemplo (DYNAMIC_GRID.PRG) do criador dessas modificações do colega Claudio Soto no fórum oficial em: http://www.hmgforum.com/viewtopic.php?p ... 7d4#p21222 baixe o exemplo e dê uma estudada.

Na pasta C:\hmg.3.0.46\hfcl\Samples\GridEx da instalação do novo HMG tem um exemplo que mostra como mudar a cor da coluna.
Obs.: Moderador me desculpe se este tópico foi criado em um lugar errado, qualquer coisa me corrija.
Não colega, não precisa pedir desculpa por isso. Se a solução que você quer for em Minigui ou HMG, está no lugar certo.

Cor na coluna de uma Grid

Enviado: 07 Nov 2012 00:53
por jjr_rs
Olá Pablo César !

Muito obrigado pelo retorno !

Eu só fico meio com o pé atrás em relação a essa versão da minigui que me indicastes, pois ainda estou utilizando a 3.0.35 por motivos de estabilidade.

Poderia migrar para essa que me falastes ? Ela está estável ?

Te pergunto pois preciso estar seguro desta mudança, pois sempre tem aquele medo de poder acontecer algo de errado quando mais precisamos... sabe como é a tal "síndrome do cagão" rsrsrrs...

Grande Abraço !

Cor na coluna de uma Grid

Enviado: 07 Nov 2012 01:33
por Claudio Soto
Hola JJR_RS.
Acá te dejo los archivos fuentes del Dynamic Grid, corre tanto en HMG 3.0.35 como en las versiones posteriores.
Saludos cordiales,
Claudio Soto.

Cor na coluna de uma Grid

Enviado: 07 Nov 2012 10:03
por Pablo César
jjr_rs escreveu:ainda estou utilizando a 3.0.35 por motivos de estabilidade.
Poderia migrar para essa que me falastes ? Ela está estável ?
Na minha opinião, sim poderia migrar por quê não ? A ultima versão é 3.0.46 que saiu recentemente e até agora não se reportou erros quanto a versão. Faça o seguinte: baixe a mais nova e recente versão, instale e compile. Se você notar alguma desvantagem, reporte o que poderia estar ocorrendo lá no fórum oficial da HMG e recompile em 3.0.35. Você não irá perder nada com isso, pelo contrário. Tendo em conta que as novas versões trabalham com versões mais novas do Harbour e a biblioteca gráfica ambos com mais recursos. Portanto você só teria a ganhar. Instalar a nova versão e manter a 3.0.35 não faz mal algum. Eu tenho assim também e pode ser usado alternando as duas versões sem problemas.
Te pergunto pois preciso estar seguro desta mudança, pois sempre tem aquele medo de poder acontecer algo de errado quando mais precisamos...
Bom, caso você queria ficar nessa versão, você pode pegar os fontes que o nosso colega Claudio Soto anexou e compile em HMG 3.0.35 que irá funcionar perfeitamente (eu testei aqui).

Cor na coluna de uma Grid

Enviado: 08 Nov 2012 17:14
por jjr_rs
Puxa pessoal (Claudio Soto e Pablo César), venho novamente agradecer aos amigos por toda ajuda prestada !

Pablo logo que possível baixarei a versão mais atual para testes e Claudio, logo estarei realizando os testes com os fontes que me passastes.

No que tiver realizado estes testes, voltarei para informá-los dos resultados.

Agradeço mais uma vez e no que eu puder ajudar, contem comigo meus amigos !

Abraços !

Att,
João Gilberto

Cor na coluna de uma Grid

Enviado: 03 Dez 2012 15:33
por jjr_rs
Pessoal, tudo bem ?!

Volto neste post para fazer outra pergunta referente a Grid. Estou com uma grid com 8 colunas e algumas linhas.
Estou com a propriedade CellNavegation = .T., para que possa navegar em cada celula de cada linha e coluna.

Situação: quando o cliente der duplo clique sobre a célula, eu retorno a linha e coluna referentes. Até aí tudo bem, pois a Grid tem nos seus "eventos" a opção "OnDblClick", onde chamo a função que recupera essas informações utilizando This.CellRowIndex e This.CellColIndex.

O problema surgiu ao realizar os testes e notar que na Grid não existe o tratamento para o evento "OnEnter" e por consequência, ao invés de usar o mouse e dar duplo clique sobre a célula na grid, caso o usuário invente de utilizar a tecla "Enter", a função será executada mas, não trará corretamente os valores de This.CellRowIndex e This.CellColIndex.

Qual a solução para esse problema ? Estive pensando em fazer a grid entender o "Enter" como se fosse um duplo clique do usuário, mas não tenho certeza de como fazer isso, e ainda mais que sirva apenas para dentro da grid e para nenhum outro "elemento" dentro do formulário que está a grid.

Desde já agradeço novamente a ajuda de todos !

Obrigado !

Cor na coluna de uma Grid

Enviado: 03 Dez 2012 17:22
por Pablo César
Qual a solução para esse problema ? Estive pensando em fazer a grid entender o "Enter" como se fosse um duplo clique do usuário, mas não tenho certeza de como fazer isso, e ainda mais que sirva apenas para dentro da grid e para nenhum outro "elemento" dentro do formulário que está a grid.
Bastaria você colocar chamada de função no evento ONDBLCLICK (ou ON DBLCLICK se usar @...) do seu GRID. O Enter funcionará igual/como. Eu faço assim:

Código: Selecionar todos

..//..
ONDBLCLICK Call_Editor(This.Value)
..//..


Function Call_Editor(aItem)
Local cCommand:=Form_1.Grid_2.Cell(aItem[1],2)

If !Empty(cCommand)
   If !File(cEditor)
      MsgStop("Source EDITOR not found !"+CRLF+CRLF+"Please locate EDITOR and try again !","User intervention required")
	  Form_1.Tab_1.Value := 3
	  Form_1.Text_5.Value:=cEditor+"         ???"
	  Form_1.Text_5.SetFocus
	  Return Nil
   Endif
   WaitWindow("Wait: Opening PRG file in your source EDITOR...", .T. )
   MyRun(cEditor+" "+cCommand)
   WaitWindow()
Endif
Return Nil
Exemplo extraído do View_Build_Log (na seção de Downloads).

Cor na coluna de uma Grid

Enviado: 03 Dez 2012 18:34
por jjr_rs
Olá novamente Pablo !

Bom, somente para mostrar o que estou a fazer... No evento OnDblClick da grid, usando a IDE, eu adicionei a chamada dessa função: F_Mostra( This.CellRowIndex, This.CellColIndex ).

Segue a função abaixo:

Código: Selecionar todos

*-------------------------------------------
Static Function F_Mostra( nLinha, nColuna )
*-------------------------------------------
MsgExclamation ( Str( nLinha,3 ), "Linha" )
MsgExclamation ( Str( nColuna,3 ), "Coluna" )
Return .T.
Com esse teste eu pude notar o problema que havia comentado, que ao dar Enter, o valor da linha não é atualizado, como acontece com os dois cliques do mouse.

Pessoalmente achei curioso a Grid não ter um tratamento/evento para o OnEnter. Não sei se já passastes por essa situação antes.

Cor na coluna de uma Grid

Enviado: 03 Dez 2012 22:52
por Pablo César
Você não prestou atenção na minha mensagem anterior. Port favor, leia novamente.

ONDBLCLICK Call_Editor(This.Value) // vai enviar um vetor

Function Call_Editor(aItem)
Local cCommand:=Form_1.Grid_2.Cell(aItem[1],2) // aqui pega o valor da célula

Cor na coluna de uma Grid

Enviado: 04 Dez 2012 10:30
por jjr_rs
Olá Pablo,

Realmente não havia entendido mesmo, desculpe...

Entendo que dessa forma consigo recuperar o valor/conteúdo da célula selecionada.

Mas o que tenho que fazer é pegar o número da linha e coluna da mesma, pois com isso eu chamo as informações de um array (espelho) dessa grid, onde terei todos os dados para mostrar ao usuário.

Vou fazer testes com esse exemplo que mostrastes e ver se consigo.

Novamente obrigado pela ajuda !

Abraços !