MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


2 participantes

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

    avatar
    alecardoso
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  alecardoso 1/6/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: https://msdn.microsoft.com/pt-br/library/office/ff194373.aspx
    ClipBoard_SetData = Fonte de como copiar: https://msdn.microsoft.com/pt-br/library/office/ff194373.aspx
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  good guy 1/6/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
    avatar
    alecardoso
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  alecardoso 2/6/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
    Como testar se a Área de Transferência é NULA, verdadeiro ou falso AttachmentTestarAreaTransferencia.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (455 Kb) Baixado 12 vez(es)
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  good guy 2/6/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
    avatar
    alecardoso
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  alecardoso 8/6/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: https://msdn.microsoft.com/pt-br/library/office/ff194373.aspx)
    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

    Conteúdo patrocinado


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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 11:40