FANDOM


Los puntos embebidos son la pesadilla de todo principiante de Clarion. Son extremadamente útiles, pero son muy difíciles de aprender. Para colmo, la abstracción que implementa la clase ABC hace más difícil todavía conocerlos y aprovecharlos. Por eso esta sección es de vital importancia.


En ABC, disparar un procedimiento después de generar un alta, modicación, etc. Editar

El proceso a disparar se hace desde el browse, la idea es saber si del Form volvió aceptando o canceló la actualización. El punto embebido es:

Local Objects
BRW1 (o el objeto de tipo browse class que sea)
ResetFromAsk  (después del Parent.call)

IF VCRRequest=VCR:None
   CASE Request
     OF InsertRecord
        IF Response = RequestCompleted
           !Hacer algún proceso
        END
   END
END!


Posicionar un browse en un registro seleccionado Editar

Al abrir un browse a veces necesitamos posicionar el selector en un registro determinado, tal como lo hacen los browses para selección.

Por ejemplo para posicionar el browse en el registro más cercano al proporcionado por el usuario:

ThisWindow.Open PROCEDURE
! Start of "WindowManager Method Data Section"
! [Priority 5000]
! End of "WindowManager Method Data Section"
CODE
! Start of "WindowManager Method Executable Code Section"
! [Priority 500]
  CLI:cliente= LOC:Cliente
  ACCESS:Clientes.fetch(CLI:Kcodigo)
  BRW1.selecting=1
! Parent Call
  PARENT.Open()
! [Priority 6300]
  BRW1.selecting=0

Otra idea, propuesta por Matías Flores: Ubicarlo por el valor de los campos de la clave. Por ejemplo, si en un browse de clientes querés posicionarte en un cliente que tiene un código determinado (Loc:Codigo):

Cli:Codigo = Loc:Codigo
SET(Cli:PorCodigo,Cli:PorCodigo)
Access:Clientes.Next()
BRW1.ResetFromFile()
ThisWindow.Reset(True)

En Legacy, activar un filtro sobre un browse abierto. Editar

Esto se pone en el punto embebido "Before opening VIEW". Acordarse de BINDEAR todas las variables que se necesiten.

!---ANTES DE ABRIR EL VIEW--- 
if SoloPendientes then
   BRW2::View:Browse{Prop:Filter} = |
   'MER:numertra = BRW2::Sort1:Reset:TRA:numertra AND MER:saldunid <> 0'
end

En un BROWSE cuando quieras presentar el nombre completo sin los espacios de un campo a otro. Editar

En el SETQUEUERECORD (4500)

Loc:ApellidoNombre = clip(CON:Apellido) & ' ' & CON:Nombre

!(Tip de Alex B.)

Código antes y después de una actualización DESDE UN BROWSE. Editar

- Antes de la llamada al Form de actualización ! ABC Objects -> Browse on Archvivo ->Ask Priority[4500]

IF Request = InsertRecord
  BEEP
  MESSAGE('ATENCION: SE VA A DAR ALTA ','ALTA',ICON:EXCLAMATION)
 ELSIF Request = ChangeRecord
  BEEP
  MESSAGE('ATENCION: SE VA A ACTUALIZAR ','CAMBIO',ICON:EXCLAMATION)
 ELSIF Request = DeleteRecord
  BEEP
  MESSAGE('ATENCION: SE VA A DAR DE BAJA ','BAJA',ICON:EXCLAMATION)
END

- Después de la actualizacion del registro !ABC Objects -> Browse on Provincia ->Ask Priority[5500]

IF ReturnValue =1
  BEEP
  MESSAGE('ATENCION: SE ACTUALIZO EL REGISTRO','ACTUALIZO 
OK',ICON:EXCLAMATION)
ELSIF ReturnValue =2
  BEEP
  MESSAGE('SE CANCELO LA ACTUALIZACION DEL REGISTRO','ATENCION',ICON:HAND)
END

!(Tip de Gustavo Olmedo)


Deshabilitar/esconder (cambiar a PROP:HIDE) un control si el browse está vacío - pe. un boton-. Editar

En el Browse.UpdateWindow(), última prioridad:

?TuBoton{PROP:Disable}=Choose(Self.Records()<>0,0,1)

¡Interferencia de bloqueo de anuncios detectada!


Wikia es un sitio libre de uso que hace dinero de la publicidad. Contamos con una experiencia modificada para los visitantes que utilizan el bloqueo de anuncios

Wikia no es accesible si se han hecho aún más modificaciones. Si se quita el bloqueador de anuncios personalizado, la página cargará como se esperaba.