MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Como testar se a Área de Transferência é NULA, verdadeiro ou falso

    Compartilhe

    alecardoso
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 15/05/2015

    Como testar se a Área de Transferência é NULA, verdadeiro ou falso

    Mensagem  alecardoso em Qua 01 Jun 2016, 10:26

    Amigos, encontrei várias dicas de como COLAR algo que já está na área de transferência, ou como COPIAR algo para a área de transferência.
    PORÉM nada a respeito que previamente TESTE se existe algo na área de transferência.

    Preciso testar ANTES de prosseguir com a operação, pois a operação DEPENDE de a área de transferência ser VERDADEIRA

    Eu estava fazendo assim:

    If Not IsNull(ClipBoard_GetData) Then
       MsgBox ("V")
       'Executa tal comando
    Else
       MsgBox ("F")
       'Executa tal comando
    End If


    ClipBoard_GetData = Fonte de como recuperar: [Você precisa estar registrado e conectado para ver este link.]
    ClipBoard_SetData = Fonte de como copiar: [Você precisa estar registrado e conectado para ver este link.]

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    Como testar se a Área de Transferência é NULA, verdadeiro ou falso

    Mensagem  good guy em Qua 01 Jun 2016, 18:00

    Olá alecardoso,

    Veja bem, acredito não haver lógica em testar a função em si, mas sim no retorno da função. Dentro da função ClipBoard_GetData, existe já um teste lógico:

    Código:

    If Not IsNull(lpClipMemory) Then
          MyString = Space$(MAXSIZE)
          RetVal = lstrcpy(MyString, lpClipMemory)
          RetVal = GlobalUnlock(hClipMemory)
          
          ' Peel off the null terminating character.
          MyString = Mid(MyString, 1, InStr(1, MyString, Chr$(0), 0) - 1)

    '**************************************************
    'Teste assim se a área de transferência é NULA ou não
    '**************************************************
         If MyString > 0 Then
           MsgBox "V"
         Else
           MsgBox "F"
         End If

    '**************************************************
       Else
          MsgBox "Could not lock memory to copy string from."
       End If

    alecardoso
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 15/05/2015

    Re: Como testar se a Área de Transferência é NULA, verdadeiro ou falso

    Mensagem  alecardoso em Qui 02 Jun 2016, 00:18

    Obrigado good guy por responder!  Uso Access 2003.  Vou postar um anexo do meu exemplo.

    Uso a função ClipBoard_GetData porque foi a única que encontrei para obter o conteúdo da área de transferência, porém não entendo como ela funciona. Apenas copiei e colei num módulo e está dando certo..hehe

    Já lhe explico o motivo que me faz querer testar se existe algo lá na área de transferência, vejamos:

    Private Sub Comando0_Click()

    'Preciso pegar o conteúdo que está na área de transferência e encontrar uma informação dentro dela. Mas, se a área de transferência estiver vazia dá erro!
    'Então, antes de eu usar a área de transferência, preciso saber se há algo lá.
       
    'No meu caso a área de transferência geralmente conterá algo como "Cliente991"   O que me importa é o número 991, ou 992, etc
    'Então, primeiro eu aplico uma função para extrair o número (função esta que aprendi aqui mesmo no maximoaccess - muito agradecido aos autores)


    Dim MinhaAreaTransf As Variant
    MinhaAreaTransf = ExtraiNumero(ClipBoard_GetData) 'só que dá erro caso á área esteja vazia (teste com sua área vazia)

       If IsNumeric(MinhaAreaTransf) And MinhaAreaTransf <= 2000 Then
           MsgBox ("vai para esquerda")
           'Comandos...
       Else
           MsgBox ("vai para direita")
           'Comandos...
       End If

    End Sub
    '--------------------------------------------------
    Só que, se não há nada na área de transferência, então dá um erro na função ClipBoard_GetData.  Então preciso de uma função para me dizer se TEM ou NÃO TEM algo na área de transferência como um TESTE PRELIMINAR, e só depois então continuar com a rotina acima.

    Não é que eu morra de amores pela função  ClipBoard_GetData, mas sou grato porque ela tem funcionado há alguns anos.  Se aí souber me indicar uma outra função mais bonitinha para copiar, colar, limpar, ou testar a área de transferência, agradeço desde já...    FuncaoCopiar_AreaTransf  ..... FuncaoColar_AreaTransf   ...   FuncaoLimpar_AreaTransf
    FuncaoTestar_AreaTransf

    Percebo que essas funções tem que habilitar dlls, mas se desse eu ia preferir habilitar as Referências para VB6 no access 2003, pois parece que os códigos para VB são mais curtinhos
    Anexos
    TestarAreaTransferencia.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (455 Kb) Baixado 4 vez(es)

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    Como testar se a Área de Transferência é NULA, verdadeiro ou falso

    Mensagem  good guy em Qui 02 Jun 2016, 15:29

    Olá Cardoso,

    Não estou conseguindo aqui com a sua função CliBoard_GetData() com o Access 2007 que é a minha versão, talvez com o Access 2010. Achei esta função na Internet, mas falta a referência correta que também não estou conseguindo encontrar qual é a certa.

    Código:

    Public Function CopiardaAreaT()
    On Error Resume Next
    Dim clipboard As MSForms.DataObject
    Dim strContents As String

    Set clipboard = New MSForms.DataObject     'Nesta linha apresenta um erro que é a falta da biblioteca correta
    clipboard.GetFromClipboard
    strContents = clipboard.GetText

    txtCopiado = strContents   'Adicionei esta linha para receber o texto copiado para a área de transferência
    End Function

    Private Sub cmdCopiar_Click()
    Call CopiardaAreaT
    End Sub

    alecardoso
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 15/05/2015

    Re: Como testar se a Área de Transferência é NULA, verdadeiro ou falso

    Mensagem  alecardoso em Qua 08 Jun 2016, 15:40

    Oi amigo!   Digamos que eu já possua uma função para copiar o conteúdo da área da transferência.  Porém, ao usá-la, ela dá erro caso não tenha NADA na área de transferência, ou caso tenha, mas não seja um TEXTO.

    Então, ... o que preciso, é uma função que faça uma pergunta para o sistema operacional (Windows 7), mais ou menos assim:
    " - Querido Windows 7, você tem algo na sua área de transferência?  E se existir algo, poderia me dizer se é um texto?"   (um pouco de humor...kkkk)

    Se não estiver vazia, e se for um texto... aí sim eu posso prosseguir em recuperar o conteúdo dela com a função ClipBoard_GetData (FONTE: [Você precisa estar registrado e conectado para ver este link.]
    Nesta fase eu não preciso, e acho mesmo um problema usar algum objeto ou referencia do access (MSForms.DataObject)

    O que vou escrever é só uma vaga ideia, preciso saber como perguntar para o sistema operacional (e não para o access eu acho), seria mais ou menos isto:

    Function VerificaAreaT(??????? As ????) As Boolean
    If IsNull(???????) or ??????? = vbNullString Then    'ou IsEmpty ou IsError...?
    VerificaAreaT = False
    Else
    VerificaAreaT = True
    End If
    End Function

      Data/hora atual: Qui 08 Dez 2016, 23:56