ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[Resolvido] Listview - Selecionar com o mouse

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
paruba
Novato
Novato


Registrado: Quinta-Feira, 26 de Junho de 2014
Mensagens: 49

MensagemEnviada: Dom Jan 04, 2015 2:23 am    Assunto: [Resolvido] Listview - Selecionar com o mouse Responder com Citação

Olá pessoal!

Essa parecia ser fácil resolver, mas estou quebrando a cabeça...

Tenho um Listview em modo "Report", com as propriedades MultiSelect e RowSelect habilitadas. Eu gostaria de selecionar alguns itens da lista apenas clicando com o mouse em cada um deles, sem precisar pressionar Ctrl ou Shift. Alguém tem alguma idéia para fazer isso?

Eu tentei o seguinte código, mas não funcionou:

Código:

procedure TfrmMain.ListView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  Item: TListItem;
begin
  Item := lvwPCList.GetItemAt(X, Y);
  if (Item <> nil) then
    Item.Selected := (not Item.Selected);
end;


Agradeço!


Editado pela última vez por paruba em Qua Jan 07, 2015 10:18 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Seg Jan 05, 2015 9:08 am    Assunto: Responder com Citação

Simule o pressionamento da tecla "Ctrl" ao passar o mouse no ListView e solte a mesma tecla ao sair.

Exemplo:

Evento OnMouseEnter do ListView:

Código:
procedure TForm1.ListView1MouseEnter(Sender: TObject);
begin
   { Mantém pressionada CTRL }
  keybd_event(VK_CONTROL,0,WM_KEYDOWN,0);
end;


Evento OnMouseLeave do ListView:

Código:
procedure TForm1.ListView1MouseLeave(Sender: TObject);
begin
   { Libera (solta) CTRL }
   keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
end;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
paruba
Novato
Novato


Registrado: Quinta-Feira, 26 de Junho de 2014
Mensagens: 49

MensagemEnviada: Seg Jan 05, 2015 7:41 pm    Assunto: Responder com Citação

Obrigado pelo retorno, mas infelizmente também não funcionou dessa forma Sad Você chegou a testar?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Ter Jan 06, 2015 8:40 am    Assunto: Responder com Citação

Sim, testei. Funciona como se propõe, seleciona mais de um item no ListView somente com o clique sem precisar de segurar a tecla "Ctrl".

Confirme se a opção MultiSelect do ListView está True.

Se não conseguir, poste seu e-mail que te mando um projeto simples de testes.
_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
paruba
Novato
Novato


Registrado: Quinta-Feira, 26 de Junho de 2014
Mensagens: 49

MensagemEnviada: Ter Jan 06, 2015 9:11 pm    Assunto: Responder com Citação

Ok, entendi. Com esse procedimento que você passou eu não posso mais usar o evento OnMouseDown do ListView. Agora já está funcionando perfeitamente! Muito obrigado!

PS. Como faço para colocar este tópico como resolvido?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Qua Jan 07, 2015 8:21 am    Assunto: Responder com Citação

Que bom que funcionou, amigo.

Para colocar o tópico como "Resolvido":

Vá no seu primeiro post, clique em "Edit" e acrescente "[Resolvido]" no título do seu post.
_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
paruba
Novato
Novato


Registrado: Quinta-Feira, 26 de Junho de 2014
Mensagens: 49

MensagemEnviada: Qua Jan 07, 2015 10:18 am    Assunto: Responder com Citação

Muito obrigado e muito sucesso para você em 2015!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB