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 

Componente para busca dinâmica

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


Registrado: Quarta-Feira, 28 de Novembro de 2012
Mensagens: 68

MensagemEnviada: Ter Mar 12, 2019 10:20 am    Assunto: Componente para busca dinâmica Responder com Citação

Prezados, bom dia.

Por gentileza, necessito criar uma busca dinâmica no meu sistema que funcionaria da seguinte forma:

Como um edit, o usuário é capaz de digitar algumas palavras e dinamicamente abrir opções abaixo desse edit (como links/botoes) para que o usuário possa clicar e ir direto na opção de tela que ele clicou.

Gostaria de saber se existe algum componente capaz de realizar o processo acima de forma dinâmica.

Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
fdsilva.desenv
Novato
Novato


Registrado: Quarta-Feira, 28 de Novembro de 2012
Mensagens: 68

MensagemEnviada: Qua Mar 13, 2019 10:06 am    Assunto: Responder com Citação

Pessoal, ninguém conhece algum componente no Delphi capaz de , ao digitar sobre ele, abrir submenus conforme o que está digitando?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
fdsilva.desenv
Novato
Novato


Registrado: Quarta-Feira, 28 de Novembro de 2012
Mensagens: 68

MensagemEnviada: Qui Mar 14, 2019 9:18 am    Assunto: Responder com Citação

Pessoal, vi que tem um componente chamado TAdvSmoothMegaMenu, o que eu queria era exatamente o que tem nessa imagem abaixo.

Caso alguém conheça o componente, ou já tenha visto algo parecido, agradeceria a ajuda...

[img] https://i.ytimg.com/vi/q1UofGuIE-s/hqdefault.jpg [/img]

abaixo o video onde eu peguei a imagem, mas não mostra como que faz Confused

[url] https://www.youtube.com/watch?v=q1UofGuIE-s [/url]

Obrigado galera. [/url]
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
anderbelluno
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011
Mensagens: 1030
Localização: Cianorte-PR

MensagemEnviada: Qui Mar 14, 2019 11:15 am    Assunto: Responder com Citação

Se não me engano o JEDI tem o jvEditSearch, ou coisa assim, mas não sei se ele cria link, mas isso é fácil, só pegar o texto do item.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
fdsilva.desenv
Novato
Novato


Registrado: Quarta-Feira, 28 de Novembro de 2012
Mensagens: 68

MensagemEnviada: Sex Mar 15, 2019 11:53 am    Assunto: Responder com Citação

Antes de mais nada obrigado pela ajuda.

Porém meu delphi é o 7 ainda e não possuo esses componentes do JEDI.

consegui de uma forma tranquila mostrar as telas conforme eu digito as palavras chaves.

os itens são criados com a seguinte caption = "Nome da Tela" + "<GW001>" (onde o GW001 corresponde aos códigos das telas que temos na tabela GWMNU).

Porém agora eu quero que, no click do item, conseguir pegar a caption e dar um copy pegando o código GW001.

Só que no evento OnMenuItemClick, ele está me dando o erro: "INVALID CLASS TYPECAST" e não consigo sair dessa parte agora.

Abaixo segue o código que desenha o meu menu dinâmico, onde faz tudo certinho:
Código:

procedure TfrmMain.EditBuscaRapidaKeyPress(Sender: TObject; var Key: Char);
var LstProd : Tstringlist;
    expressao, acesso : string;
    i,cont, pesquisaacesso : integer;
    RsPesquisa : recordset;
begin
  if Length(EditBuscaRapida.Text) > 0 then
  begin
    expressao  := '';
    RSPesquisa := CreateADOObject(CLASS_Recordset) as Recordset;
    try
        lstProd := TStringList.Create;
        lstProd.Delimiter := ' ';
        lstProd.DelimitedText := EditBuscaRapida.Text;
    finally
        if LstProd.Count > 0 then
        begin

          for i := 0 to LstProd.Count -1 do
          begin
            if i = 0 then
              expressao := expressao + ' (PALAVRACHAVE like '+ QuotedStr('%' + LstProd[i] + '%')+') '
            else
              expressao := expressao + ' AND (PALAVRACHAVE like '+ QuotedStr('%' + LstProd[i] + '%')+') ';
          end;

          if expressao <then> 0 ) then
                  Items[cont].CaptionFont.Color := clBlack
                else
                  Items[cont].CaptionFont.Color := clGray;

                Items[cont].Visible := True;
                Items[cont].Enabled := True;
              end;
              RsPesquisa.MoveNext;
              if not RsPesquisa.EOF then
                advsmthBuscaRapida.Height := advsmthBuscaRapida.Height + 15;
            end;
          end
          else
            advsmthBuscaRapida.Visible := False;
        end;
        LstProd.free;
        RsPesquisa := nil;
    end;
  end
  else
  begin
    advsmthBuscaRapida.Visible := False;
    advsmthBuscaRapida.MenuItems.Clear;
  end;
end;



E aqui segue a procedure que está me dando erro quando tendo atrelar à uma string "TELA" com a caption do item do menu que foi clicado.
Código:

procedure TfrmMain.advsmthBuscaRapidaMenuItemClick(Sender: TObject;
  ItemIndex: Integer);
var
  tela : string;
begin
  with advsmthBuscaRapida.MenuItems do
  begin
    tela := Copy((Sender as TAdvSmoothMegaMenuItem).Caption, Pos ('<', (Sender as TAdvSmoothMegaMenuItem).Caption) + 1, Length((Sender as TAdvSmoothMegaMenuItem).Caption)-1);
  end;

end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
anderbelluno
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011
Mensagens: 1030
Localização: Cianorte-PR

MensagemEnviada: Sáb Mar 16, 2019 3:41 am    Assunto: Responder com Citação

Erro no TypeCast.
Tenta colocar assim:

Código:

Sender(TAdvSmoothMegaMenuItem).Caption
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
fdsilva.desenv
Novato
Novato


Registrado: Quarta-Feira, 28 de Novembro de 2012
Mensagens: 68

MensagemEnviada: Seg Mar 18, 2019 8:39 am    Assunto: Responder com Citação

ele retorna erro na hora de compilar..

até simplifiquei o código para ver se seria o processo de copy.

coloquei:

tela := Sender(TAdvSmoothMegaMenuItems).Caption;

e ele retornou o erro: "missing operator or semicolon"
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
fdsilva.desenv
Novato
Novato


Registrado: Quarta-Feira, 28 de Novembro de 2012
Mensagens: 68

MensagemEnviada: Seg Mar 18, 2019 9:39 am    Assunto: Responder com Citação

Mas assim, vi outra forma de pegar a caption e que dá certo, porém preciso saber o que preciso colocar no lugar do """número 5""" para pegar o item que acabo de clicar...

Código:

procedure TfrmMain.advsmthBuscaRapidaMenuItemClick(Sender: TObject;
  ItemIndex: Integer);
var
  tela : string;
  i : Integer;
  var codmenu : array of string;
  action : TAction;
begin
  with advsmthBuscaRapida.MenuItems do
  begin
    tela := Items[5].Caption; // como pegar o itemindex para deixar o 5
    tela := Copy(tela , Pos('<', tela ) + 1, Length(tela)-2);
  end;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
anderbelluno
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011
Mensagens: 1030
Localização: Cianorte-PR

MensagemEnviada: Seg Mar 18, 2019 5:18 pm    Assunto: Responder com Citação

Só trocar o 5 por ItemIndex
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