Tecla "Insert" no campo texto

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
racandradebr
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sex, 30 Set 2005 12:26 am
Localização: SP

Senhores,

Gostaria de saber se é possível "habilitar" ou "simular" o que a tecla "Insert" faz, por exemplo:

Ten um texto padrão.

NOME: DATA:

e gostaria de digitar o nome e não mover o texto "DATA" pra frente.

É possível ?
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Pelo que eu entendi, você quer sobrescrever o texto. (se está escrito CARRO, e você digita a letra B, vai ficar BARRO, certo ?)

Se é isso, não tem como fazer no Forms. (não tem uma propriedade pra isso e o Forms não tem trigger que dispara quando é digitado um caracter) :-(
racandradebr
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sex, 30 Set 2005 12:26 am
Localização: SP

Era exatamente issso
Avatar do usuário
leobbg
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Sex, 29 Out 2004 10:25 am
Localização: PORTO ALEGRE - RS
Leo BBG Consultor Oracle

Na verdade eu fiz essa rotina para validar as teclas digitadas, e como exemplo coloquei as letras : "C" e "L", essas quando informadas em um campo, são retiradas e exibem um alerta de erro, mas acredito que alterando um pouco o código consiga um resultado parecido com o que quer.

olha só..

WHEN-TIMER-EXPIRED

Selecionar tudo

begin
	--
	pck_key.valida_timer;
	--
end;
WHEN-NEW-FORM-INSTANCE

Selecionar tudo

begin
	-----------------------------------------------------
	-- Seta o nome do timer e o item no qual deve ser
	-- feita as validações de caracteres.
	-----------------------------------------------------
	pck_key.set_variaveis( 'ValidaKey', 'bloco.item' );
	-----------------------------------------------------
	-- Restringe o uso dos seguintes caracteres.
	-----------------------------------------------------
	pck_key.set_caracter( 'C' );
	pck_key.set_caracter( 'L' );
	--
end;
PACKAGE

Selecionar tudo

package pck_key is
  --
  vg_timer varchar2(255);
  vg_item  varchar2(255);
  --
  type vrecord is record ( caracter varchar2(1) );
  type vtable is table of vrecord index by binary_integer;
  --
  vtab vtable;
  --
  procedure set_variaveis( pNomeTimer in varchar2
                         , pNomeItem  in varchar2 );
  procedure set_caracter( pcaracter in varchar2 );
  --
  procedure limpa_caracteres;
  --
  procedure valida_timer;
  procedure chama_timer;                         
  --
end;

package body pck_key is
  /*************************************************************************/
  /**********            Procedimento SET_VARIAVEIS               **********/
  /*************************************************************************/
  procedure set_variaveis( pNomeTimer in varchar2
                         , pNomeItem  in varchar2 ) is
  begin
  	--
  	vg_timer := upper( pNomeTimer );
  	vg_item  := upper( pNomeItem  );
  	--
  end;
  /*************************************************************************/
  /**********             Procedimento SET_CARACTER               **********/
  /*************************************************************************/
  procedure set_caracter( pcaracter in varchar2 ) is
  begin
  	--
  	vtab( nvl( vtab.last, 0 ) + 1 ).caracter := pcaracter;
  	--
  end;
  /*************************************************************************/
  /**********           Procedimento LIMPA_CARACTERES             **********/
  /*************************************************************************/
  procedure limpa_caracteres is
  begin
  	--
  	if vtab.exists(1) then
  		vtab.delete;
  	end if;
  	--
  end;
  /*************************************************************************/
  /**********             Procedimento VALIDA_TIMER               **********/
  /*************************************************************************/
  procedure valida_timer is
		--
		vitem_corrente  varchar2(255) := name_in( 'system.cursor_item' );
		vtimer_corrente varchar2(255) := upper( get_application_property( timer_name ) );
		--
	begin
	  --
	  if name_in( vg_item ) is not null and vitem_corrente = vg_item then
	  	--
		  if ( vtimer_corrente = vg_timer ) then
		    --
		    if vtab.exists(1) then
		    	--
		    	for i in vtab.first .. vtab.last
		    	loop
		    		--
		    		if instr( name_in( vg_item ), vtab(i).caracter ) > 0 then
		    			--
		    			msg_alert( 'Tecla "' || vtab(i).caracter || '" inválida. Operação cancelada.', 'E', false );
		    			copy( replace( name_in( vg_item ), vtab(i).caracter, '' ), vg_item );
		    			--
		    		end if;
		    		--
		    	end loop;
		    	--
		    end if;
		    --
		  end if;	
	    --
	  end if;
	 	--
	end;
	/*************************************************************************/
  /**********             Procedimento CHAMA_TIMER                **********/
  /*************************************************************************/
  procedure chama_timer is
		--
		vtimer timer;
		--
	begin
	  --
	  vtimer := find_timer( vg_timer );
	  --
	  if id_Null( vtimer ) then
	    --        
	     vtimer := create_timer( vg_timer, 100, repeat );
	    --
	  end if;
	  --
	end;
	--
end;

valeus!! e abraço . :twisted:
Responder
  • Informação
  • Quem está online

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