Alterar em tempo de execução fundo do campo.

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Pessoal preciso alterar em tempo de execução a cor de fundo de um campo "item de exibição", será mais ou menos assim: se campo1 for diferente do campo2 o campo2 tem o fundo alterado.
Existe alguma forma de isso ser feito no Forms 6i?
joaogarcia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 91
Registrado em: Ter, 20 Mar 2007 7:19 pm
Localização: Campinas - SP
Contato:
Cordialmente,
João C. Garcia

Olhe os 2 tópicos abaixo e veja se é isso q está procurando.

http://glufke.net/oracle/viewtopic.php?t=1857

http://glufke.net/oracle/viewtopic.php?p=6454

Seu bloco é multi ou single record ?
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Nos exemplos eu consegui deixar, mas como os dados são multi record (tipo uma grade) toda a coluna fica vermelha e não somente as linhas onde apresentam as diferenças.
Será que não existe forma de implementar isso no Forms 6i?
rodfbar
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 241
Registrado em: Ter, 09 Out 2007 11:15 am
Localização: Batatais - SP

ola...

uma vez fiz isso.... q eu me lembre eu criei dois atributos visuais e setava meus itens com o comando "display_item"

Selecionar tudo

  if condição_1 then
    dispaly_item('item','visual_atributo1');
  else
    dispaly_item('item','visual_atributo2');
  end if;
abrçs
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Então, o fundo seletivo já está funcionando, o problema é que o meu form é tabular e ele pinta toda a coluna, não somente a linha com problema.

Maior osso isso no forms, se fosse um jTable do Java já tava rodando aqui. :-o
joaogarcia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 91
Registrado em: Ter, 20 Mar 2007 7:19 pm
Localização: Campinas - SP
Contato:
Cordialmente,
João C. Garcia

pyro beleza ?

Tem como fazer isso através do SET_ITEM_INSTANCE_PROPERTY.

Mas primeiro você terá que criar um VISUAL_ATTRIBUTE, onde você definirá todas as propriedades de cores do seu campo.

Depois é só utilizar o comando conforme a sintaxe abaixo:

Selecionar tudo

SET_ITEM_INSTANCE_PROPERTY('BLOCO.CAMPO', :SYSTEM.CURSOR_RECORD, VISUAL_ATTRIBUTE, 'NOME DO VISUAL ATTRIBUTE');
Tente por na trigger POST-QUERY do seu bloco E/OU na WHEN-NEW-RECORD-INSTANCE.

T+
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Cara tentei implementar essa dica mas dá o seguinte erro:

Selecionar tudo

Erro 307
 muitas declarações de 'SET_ITEM_INSTANCE_PROPERTY' são compatíveis com esta chamada

To ferrado com isso, e o pior (ou melhor, sei lá) é que só falta isso para entregar o trabalho.
joaogarcia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 91
Registrado em: Ter, 20 Mar 2007 7:19 pm
Localização: Campinas - SP
Contato:
Cordialmente,
João C. Garcia

Erro estranho mesmo...

Explique aí qual trigger você está usando e posta o trecho do seu código onde o forms acusa o erro...
pyro
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 323
Registrado em: Qui, 21 Set 2006 10:21 am
Localização: Barala - TT

Estou utilizando no POST-QUERY
zhak
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Seg, 25 Ago 2008 9:50 am
Localização: Lisboa

Também de gostaria de saber a mesma coisa,já que já experimentei isto anteriormente e dá o mesmo erro de, o set_item_instance_property não ser possivel dentro de um certo trigger,por exemplo no post_query
joaogarcia
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 91
Registrado em: Ter, 20 Mar 2007 7:19 pm
Localização: Campinas - SP
Contato:
Cordialmente,
João C. Garcia

Tente usar conforme abaixo, mas não esquece de criar o visual attibute:
Acabei de testar na trigger post-query e funcionou normalmente.

O erro não aparece quando se usa o current_record.
A variável de sistema :system.cursor_record deve ter uso restrito.

Selecionar tudo

SET_ITEM_INSTANCE_PROPERTY('BLOCO.CAMPO', CURRENT_RECORD, VISUAL_ATTRIBUTE, 'NOME DO VISUAL ATTRIBUTE');
wtoyama
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Ter, 04 Nov 2008 1:47 pm
Localização: Campinas

É isso mesmo que o JoaoGarcia escreveu.
Tente usar

Selecionar tudo

SET_ITEM_INSTANCE_PROPERTY('BLOCO.ITEM', CURRENT_RECORD, VISUAL_ATTRIBUTE, 'NOME_ATRIBUTO');
Lembrar de voltar para o atributo "original", ou seja, faça um ELSE com o SET_ITEM_INSTANCE_PROPERTY voltando para o visual attribute que você usa como padrão.

O Visual Attribute tem que ser criado (Object Navigator / Visual Attributes) - pode pegar o padrão, copiar, e alterar as propriedades Color (Foreground e Background)
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 8 visitantes