| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
fdsilva.desenv Novato

Registrado: Quarta-Feira, 28 de Novembro de 2012 Mensagens: 68
|
Enviada: Ter Mar 12, 2019 10:20 am Assunto: Componente para busca dinâmica |
|
|
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 |
|
 |
fdsilva.desenv Novato

Registrado: Quarta-Feira, 28 de Novembro de 2012 Mensagens: 68
|
Enviada: Qua Mar 13, 2019 10:06 am Assunto: |
|
|
| Pessoal, ninguém conhece algum componente no Delphi capaz de , ao digitar sobre ele, abrir submenus conforme o que está digitando? |
|
| Voltar ao Topo |
|
 |
fdsilva.desenv Novato

Registrado: Quarta-Feira, 28 de Novembro de 2012 Mensagens: 68
|
Enviada: Qui Mar 14, 2019 9:18 am Assunto: |
|
|
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
[url] https://www.youtube.com/watch?v=q1UofGuIE-s [/url]
Obrigado galera. [/url] |
|
| Voltar ao Topo |
|
 |
anderbelluno Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1030 Localização: Cianorte-PR
|
Enviada: Qui Mar 14, 2019 11:15 am Assunto: |
|
|
| 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 |
|
 |
fdsilva.desenv Novato

Registrado: Quarta-Feira, 28 de Novembro de 2012 Mensagens: 68
|
Enviada: Sex Mar 15, 2019 11:53 am Assunto: |
|
|
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 |
|
 |
anderbelluno Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1030 Localização: Cianorte-PR
|
Enviada: Sáb Mar 16, 2019 3:41 am Assunto: |
|
|
Erro no TypeCast.
Tenta colocar assim:
| Código: |
Sender(TAdvSmoothMegaMenuItem).Caption
|
|
|
| Voltar ao Topo |
|
 |
fdsilva.desenv Novato

Registrado: Quarta-Feira, 28 de Novembro de 2012 Mensagens: 68
|
Enviada: Seg Mar 18, 2019 8:39 am Assunto: |
|
|
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 |
|
 |
fdsilva.desenv Novato

Registrado: Quarta-Feira, 28 de Novembro de 2012 Mensagens: 68
|
Enviada: Seg Mar 18, 2019 9:39 am Assunto: |
|
|
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 |
|
 |
anderbelluno Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1030 Localização: Cianorte-PR
|
Enviada: Seg Mar 18, 2019 5:18 pm Assunto: |
|
|
| Só trocar o 5 por ItemIndex |
|
| Voltar ao Topo |
|
 |
|