BlackTDN Search

domingo, 2 de outubro de 2011

Protheus :: Advpl :: Usando GetCellRect para edição de célula em um ListBox

Dia desses precisei alterar uma “customização” em um cliente e uma das novas implementações seria a substituição de alguns campos por um “ComboBox” editável. Esses campos estavam em um “ListBox” que, normalmente, não permite a edição das Células nas colunas de seu “Browse”. Após algumas tentativas, e, baseando-me na forma em que uma Célula da GetDados é Editada, cheguei à função (não documentada) GetCellRect( oBrowse , @aDim ).

GetCellRect retorna, por referência em aDim, as Dimensões da Célula a qual queremos editar. O Segredo dela é o fragmento do Código abaixo:

image

Considerando que a Edição era apenas para o “ComboBox” não me preocupei em generalizar a função, tornando-a específica: Permitir a Edição de uma Célula do “ListBox” através de um “ComboBox”.

O exemplo poderá ser ampliado e generalizado de acordo com as suas necessidades.

Usando a tabela CTT (Centros de Custo ) obteremos o seguinte resultado:

image

image

image

image

Observem que, na tela inicial do “Client”, usei U_dbgLBoxE. U_dbgLBoxE é compilada condicionalmente. Sendo assim, para poder executá-la, far-se-a necessária a definição da seguinte constante:

Parâmetros: /D___DEBUG

image

Caso contrário, a execução do código será através da U_EdtLBoxCol() via Menu ou Fórmula.

O Código poderá ser obtido aqui.

[]s

иαldσ dj

2 comentários:

  1. Naldo,
    Estou a procura de como colocar cores nas linhas do objeto LISTBOX, mas quero deixar de cor diferente linhas de acordo com a situação do vetor, eu consegui fazer no getdados mas no listbox nao. Voce ja viu algum listbox que modifica as cores, ou tem a classe do listbox para que eu possa descobrir, pois no original ele deixa azul e branco intermitente, entao significa que de alguma forma ele faz. Valeu.

    ResponderExcluir
  2. Blz Naldo, cara to com um problema, preciso ou colorir um celula conforme uma condição ou colocar uma imagem juntamente com texto, ou legenda sei lá ? Já viu alguma coisa mano, pode ser listbox, twbrowse sei lá qualquer coisa, é possível ? preciso montar tipo um calendário e células com imagem, legenda, ou cor diferenciada.

    Abraços

    ResponderExcluir