Pessoal na Lista de Discussao surgiu a seguinte duvida Normalmente quando utilizamos o exclusive-lock juntamente com um find first se o registro esta bloqueado aparece a tela padrão do progress avisando que o registro esta em uso por outro usuário com um botão de cancelar, caso o usuário aperte em cancelar o programa pula o find e continua porém gostaria de saber como fazer para avisar que o registro esta bloqueado e não permitir que o usuário clique em cancelar e obrigue fazer esperar até desbloquear o registro ? Abaixo segue a resposta do nosso amigo Daniel Cardelli : Este é só um exemplo de uma procedure que utilizamos aqui. Mas aqui utilizamos programação caracter. Código: FIND Item WHERE RECID(Item) = rc-Item EXCLUSIVE-LOCK NO-WAIT NO-ERROR. IF AVAILABLE Item AND NOT LOCKED Item THEN DO: HIDE MESSAGE NO-PAUSE. RETURN "". END. FIND Item WHERE RECID(Item) = rc-Item NO-LOCK NO-ERROR. FIND FIRST _lock WHERE _lock._lock-recid = INTEGER(RECID(Item)) NO-LOCK NO-ERROR. IF AVAILABLE _lock THEN FIND FIRST _connect WHERE _connect._connect-usr = _lock._lock-usr NO-LOCK NO-ERROR. IF AVAILABLE _lock AND AVAILABLE _connect THEN ASSIGN ch-LockMessage = "[" + CAPS(_lock._lock-name) + " Em:" + CAPS(ENTRY(3,_connect._connect-device,"/") + ENTRY(4,_connect._connect-device,"/")) + "], Usando Item [" + ch-it-codigo + "]". ELSE ASSIGN ch-LockMessage = "Outro Usuario Utilizando Item [" + ch-it-codigo + "]". HIDE MESSAGE NO-PAUSE. HIDE FRAME fr-message NO-PAUSE. IF ch-LockMessage <> "" THEN RETURN ch-LockMessage. RETURN "". Este é só um exemplo para que você possa se basear a construir a sua procedure.